在TypeScript声明(*.d.ts文件)中导入JSON文件
我正在编写一个声明文件,该文件应声明一个全局类型,并严格遵守字符串短语的特定列表。在TypeScript声明(*.d.ts文件)中导入JSON文件,json,typescript,dynamic,types,import,Json,Typescript,Dynamic,Types,Import,我正在编写一个声明文件,该文件应声明一个全局类型,并严格遵守字符串短语的特定列表。 这些字符串短语实际上是JSON文件中对象的属性键的一部分 两个问题: 是否可以将JSON文件导入声明文件,并使用基本函数(如Object.keys和Array.map)对其进行处理 然而,我想知道,是否有可能使用JS字符串数组来定义TS中的类型 让我给你一个代码示例 假设我们有一个名为data.JSON的JSON文件: { "someList": { "#key1&quo
这些字符串短语实际上是JSON文件中对象的属性键的一部分 两个问题:
Object.keys
和Array.map
)对其进行处理data.JSON的JSON文件:
{
"someList": {
"#key1": {"a": 1, "b": 2},
"#key2": "some value",
"#key3": 1234
}
}
现在,我想创建以下声明文件global.d.ts
:
import data from './data.json';
declare global {
type AllowedKeys = Object(data.someList).map(key => key.substr(1));
}
基本上,我需要这样定义类型(动态定义为JSON文件更改):
type AllowedKeys = "key1" | "key2" | "key3";
任何帮助或指导都将不胜感激。您可以让typescript从json文件中的数据推断类型
从“/data.json”导入数据;
导出类型AllowedKeys=keyof-typeof-data[“someList”];
//这相当于
//导出类型AllowedKeys=“#键1”|“#键2”|“#键3”
生成的d.ts
文件如下所示:
type AllowedKeys = "key1" | "key2" | "key3";
从“/data.json”导入数据;
导出declare type AllowedKeys=keyof typeof data[“someList”];
据我所知,无法在typescript中操作字符串文字(即,删除#
)
查看这些github问题: