gpt4 book ai didi

json - 在 typescript 中为 JSON 文件添加类型定义

转载 作者:行者123 更新时间:2023-12-05 09:10:10 25 4
gpt4 key购买 nike

我有一个配置文件 config.json 位于我的 typescript 项目中,我想为其添加强类型。

src/config.json

{
"id": "some-id-string",
"data": {
"somekey" : "some value"
}
}

为了添加类型,我还向我的项目添加了一个 index.d.ts 文件:

src/index.d.ts

declare module 'config.json' {
export const id: string;
export const data: Record<string, string>;
}

但是它似乎不起作用,因为我可以将任意字段添加到我的 config.json 并且 typescript 很乐意让它们通过,即:

src/config.json

{
"id": "some-id-string",
"foo": "bar", // <-- typescript doesn't catch this
"data": {
"somekey" : "some value"
}
}

我使用带有 typescript 标志的 create-react-app 创建了这个项目,它产生了以下 tsconfig.json:

tsconfig.json


{
"compilerOptions": {
"target": "es5",
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react"
},
"include": ["src"]
}

我想我在这里漏掉了一些小步骤,但我不确定,而且我找不到很多例子来说明这是如何完成的。

编辑:这似乎是可行的,因为 tsconfig.json 本身具有强类型:

strongly typed json

最佳答案

tsconfig.json 文件中提供的“强类型”实际上根本不是 TypeScript 的工作!

相反,VSCode 使用内置的 JSONSchema 集成为 json 文件提供类型提示。 https://code.visualstudio.com/docs/languages/json

许多开源库为那里的配置提供 JSON 模式,例如:webpack、eslint 等。( https://schemastore.azurewebsites.net/json/ )

关于json - 在 typescript 中为 JSON 文件添加类型定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61781847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com