0

我有这样的数据结构:

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 提示valueintype DataType应该具有类型typeof keyof VALUES(而不是string)而不必显式创建类型?可能是这样的:

const DATA = [
    {
        name: "name1",
        value: (keyof VALUES).val1
    },
    {
        name: "name2",
        value: (keyof VALUES).val2
    }
];
4

1 回答 1

1

您可以使用类型断言

const DATA = [{ name: "name1", value: "val1" as keyof typeof VALUES }];

但我宁愿定义一个类型并明确地将其用于DATA变量。这样打字稿将验证值确实是有效的键。

于 2020-04-07T06:17:11.117 回答