我想声明一个类型强制的项目数组,并能够从中派生一个联合类型。如果您没有明确地为数组中的项目指定类型,则此模式有效。我不确定如何最好地解释它,所以这里是一个例子:
例 1
type Pair = {
key: string;
value: number;
};
const pairs: ReadonlyArray<Pair> = [
{ key: 'foo', value: 1 },
{ key: 'bar', value: 2 },
] as const;
type Keys = typeof pairs[number]['key']
例 2
type Data = {
name: string;
age: number;
};
const DataRecord: Record<string, Data> = {
foo: { name: 'Mark', age: 35 },
bar: { name: 'Jeff', age: 56 },
} as const;
type Keys = keyof typeof DataRecord;
下面是使用as const
. 我想要同样的行为,但数组被显式键入。
const pairs = [
{ key: 'foo', value: 1 },
{ key: 'bar', value: 2 },
] as const;
type Keys = typeof pairs[number]['key']; // "foo" | "bar"
所需的键值:"foo"|"bar"
键的实际值:string