Я хотел бы объявить массив элементов с принудительным типом и получить из него тип объединения. Этот шаблон работает, если вы явно не указываете тип элементов в массиве. Я не уверен, как это лучше всего объяснить, поэтому вот пример:
ПРИМЕР 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