我正在写一个声明文件,它应该声明一个全局类型,并严格到一个特定的字符串短语列表。
这些字符串短语实际上是JSON文件中对象的属性键的一部分。
两个问题:
1.是否可以将JSON文件导入到声明文件中,并使用Object.keys
和Array.map
等基本函数对其进行处理?
1.然而,我想知道,是否有可能使用JS字符串数组来定义TS中的类型?
让我给你一个代码示例。
假设我们有一个名为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";
任何帮助或至少指导将不胜感激。
1条答案
按热度按时间kkbh8khc1#
EDIT:现在可以使用模板字符串常量来推断从给定字符开始的子字符串,如下所示:
您可以让typescript从json-file中的数据推断类型。
生成的
d.ts
文件如下所示:据我所知,还没有办法在typescript中操作字符串常量(例如,删除
#
)。看看那些github问题: