Typescript 嵌套的高级类型,推断该类型是另一个对象的键?
我有这样一个数据结构:Typescript 嵌套的高级类型,推断该类型是另一个对象的键?,typescript,types,Typescript,Types,我有这样一个数据结构: const VALUES = { val1: {...}, val2: {...}, val3: {...} }; const DATA = [ { name: "name1", value: "val1" // The value here, is a KEY (not a value) in the "VALUES" object. }, { name: "name2",
const VALUES = {
val1: {...},
val2: {...},
val3: {...}
};
const DATA = [
{
name: "name1",
value: "val1" // The value here, is a KEY (not a value) in the "VALUES" object.
},
{
name: "name2",
value: "val2"
}
];
type DataType = typeof DATA[number];/*{
name: string;
value: string; // I want this to be inferred as "typeof keyof VALUES"
}*/
所以我的问题是,;是否有一种方法可以提示TypeScript,在type DataType
中value
应该具有类型typeof keyof VALUES
(而不是string
),而不必显式创建类型?也许是这样的:
const DATA = [
{
name: "name1",
value: (keyof VALUES).val1
},
{
name: "name2",
value: (keyof VALUES).val2
}
];
您可以使用:
但我宁愿定义一个类型,并显式地将其用于
数据
变量。这样,typescript将验证值是否确实是有效的键。const DATA=[{name:“name1”,value:“val1”作为typeof值的键}]代码>@AlekseyL。很好用!作为回答:)
const DATA = [{ name: "name1", value: "val1" as keyof typeof VALUES }];