【发布时间】:2020-11-22 23:39:57
【问题描述】:
我正在编写一个声明文件,它应该声明一个全局类型并严格限制于特定的字符串短语列表。
这些字符串短语实际上是位于 JSON 文件中的对象中的属性键的一部分。
两个问题:
- 是否可以将 JSON 文件导入声明文件并使用基本函数(如
Object.keys和Array.map)对其进行处理? - 然而,我想知道,是否甚至可以使用 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";
任何帮助或至少是指导将不胜感激。
【问题讨论】:
标签: json typescript dynamic types import