TypeScript 对象值的字符串联合类型作为常量
如果我有一个对象数组,我如何获取每个对象的一个属性,并创建它的常量值的字符串联合?例如,下面我有数组 options。我想创建一个类型,比如 type Values='firstName' | 'lastName' | 'email'。
const options = [
{ label: 'First Name', value: 'firstName' },
{ label: 'Last Name', value: 'lastName' },
{ label: 'Email', value: 'email' }
] as const;
// Close, but not quite what I need
const values = options.map(x => x.value) // ("firstName"|"lastName"|"email")[]
答案#1
你可以通过使用 typeof 并用 number 对数组类型进行索引来获取类型:
type Values = (typeof values)[number];
请注意,当在此上下文中使用 typeof 时,其行为是不同的。它用于获取变量的类型;在此情况下,是 values 的类型为 ("firstName" | "lastName" | "email")[]。
操场
