Я пишу файл декларации, который должен объявлять глобальный тип и строго соответствовать определенному c списку строковых фраз. Эти строковые фразы фактически являются частью ключей свойств в объекте, расположенном в файле JSON.
Два вопроса:
- Можно ли импортировать файл JSON в файл объявления и обработать его с помощью базовых c функций, например
Object.keys
и Array.map
? - Тем не менее, мне интересно, можно ли вообще использовать JS массив строк для определения типа в TS?
Позвольте мне привести пример кода.
Допустим, у нас есть следующий файл JSON с именем data.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";
Любая помощь или хотя бы руководство приветствуются.