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 }];