如何从 TS 文字联合类型推断对象的键和值?
How to infer keys and values of an object from TS literal union type?
我有两个文字联合类型的字符串,并希望它们成为对象的可能键和值。
export type AlarmKeyword = 'R1' | 'R2';
export type ResourceTypes = 'nktw' | 'rtw' | 'nef' | 'rth' | 'hlf' | 'dlk';
新类型如下所示:
export type AlarmKeywordObject = {
[P in AlarmKeyword]: { [T in ResourceTypes]: number };
};
但是 TS 现在抱怨这段代码:
{
R1: {
rtw: 1,
},
}
Type '{ rtw: number; }' is missing the following properties from type
'{ nktw: number; rtw: number; nef: number; rth: number; hlf: number;
dlk: number; }': nktw, nef, rth, hlf, dlk
我如何确保密钥是可选的而不是所有密钥都是必需的?
谢谢!
您可以使用问号?
来标记键是可选的:
type AlarmKeywordObject = {
[P in AlarmKeyword]?: { [T in ResourceTypes]?: number }
};
我有两个文字联合类型的字符串,并希望它们成为对象的可能键和值。
export type AlarmKeyword = 'R1' | 'R2';
export type ResourceTypes = 'nktw' | 'rtw' | 'nef' | 'rth' | 'hlf' | 'dlk';
新类型如下所示:
export type AlarmKeywordObject = {
[P in AlarmKeyword]: { [T in ResourceTypes]: number };
};
但是 TS 现在抱怨这段代码:
{
R1: {
rtw: 1,
},
}
Type '{ rtw: number; }' is missing the following properties from type '{ nktw: number; rtw: number; nef: number; rth: number; hlf: number; dlk: number; }': nktw, nef, rth, hlf, dlk
我如何确保密钥是可选的而不是所有密钥都是必需的?
谢谢!
您可以使用问号?
来标记键是可选的:
type AlarmKeywordObject = {
[P in AlarmKeyword]?: { [T in ResourceTypes]?: number }
};