Ale*_*ich 10 import json typescript
当在启用该选项的 TypeScript 项目中导入 JSON 文件时,resolveJsonModuleTypeScript 编译器能够自动推断导入的 JSON 文件的类型。但是,这种类型太具体了,我想用更通用的类型替换它。我尝试通过编写自定义类型定义文件来做到这一点:
// file modules.d.ts
declare module "*.json" {
const value: Record<string, string>;
export default value;
}
Run Code Online (Sandbox Code Playgroud)
但 TypeScript 编译器会忽略这个定义。
对我有用的唯一方法是使用临时变量,如下所示:
import DATA_JSON from "./data.json";
const DATA = DATA_JSON as Record<string, string>; // Use my own type instead of the inferred one.
export { DATA };
Run Code Online (Sandbox Code Playgroud)
但这很无聊。有没有其他方法可以将我自己的类型赋予 TypeScript 中导入的 JSON 文件?
kuu*_*son -3
你可以尝试使用映射类型。不确定您想要实现什么结构/类型,但我相信这是要走的路。
拥有这样的要求听起来像是开始探索高级 TS 的好时机(我推荐yt 上的Matt Pocock)
import DATA_JSON from './data.json';
const OWN_TYPED_DATA_JSON = DATA_JSON as unknown as {
[key in keyof typeof DATA_JSON]: {
[nestedKey in keyof typeof DATA_JSON[key]]: {
[moreNestedKey in keyof typeof DATA_JSON[key][nestedKey]]: string
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2500 次 |
| 最近记录: |