如何在 TypeScript 中使用导入的 JSON 文件类型

How do I use the type of imported JSON file in TypeScript

我有一个使用 NextJS, React, GraphQL and TypeScript 构建的项目。在这个项目中,我有一些静态 JSON 数据存储在 ../data/applications.json:

[
    {
        "id": "elector-v3",
        "name": "Tesla Auto Pilot Elector API",
        "apiName": "tap-api-v3-elector",
        "apiPath": "/tap/v3/elector"
    },
    {
        "id": "clairvoyance-v2",
        "name": "Tesla Auto Pilot Clairvoyance API",
        "apiName": "tap-api-v2-clairvoyance",
        "apiPath": "/tap/v2/clairvoyance"
    },
    ... and many more...
]

使用 NextJS 和 TypeScript,我可以将这些数据直接导入到我的 TS 文件中:

import applicationsData from "../data/applications.json"

我注意到在处理这些数据时,TypeScript 可以识别这些数据的形状。

如何从这些数据中创建类型?

假设数组中的每个对象都具有相同的四个属性,那么 typeof applicationsData[0] 将为您提供合适的类型。然后,您可以使用 Type Alias 为此类型创建一个专有名称:

type ApplicationData = typeof applicationsData[0]

记住:使用推断类型将适用于像这样的基本用例,在这种情况下,您可以控制数据并且其结构是稳定的。您基本上是将第一个元素用作数组中所有数据的“样本”。对于结构更易变的情况,最好手动定义您自己的类型定义。