我需要使变量TYPES_GENERATED
的类型使其具有数组TYPES_ARR
中具有symbol
值的键。
const TYPES_ARR = [
'HttpClient',
'Parser'
]
const TYPES_GENERATED = {}
TYPES_ARR.forEach(i => {
TYPES_GENERATED[i] = Symbol.for(i)
})
我不想写:
const TYPES_GENERATED: {
HttpClient: symbol
Parser: symbol
} = {}
我从here那里获取了上面的代码。
有没有办法做到这一点?我可以使用最新版本的TypeScript。
答案 0 :(得分:2)
我的建议是使用const
assertion允许编译器跟踪TYPES_ARR
中的特定字符串文字值,然后断言TYPES_GENERATED
是{{3 }}(例如内置Record<K, V>
)具有来自TYPES_ARR
元素的键和类型symbol
的值:
const TYPES_ARR = ["HttpClient", "Parser"] as const;
const TYPES_GENERATED = {} as Record<typeof TYPES_ARR[number], symbol>;
TYPES_ARR.forEach(i => {
TYPES_GENERATED[i] = Symbol.for(i);
});
希望有所帮助;祝你好运!