一般情况下,可以用 keyof
来获取类型,如下所示:
const record = { a: 'aa', b: 'bb', c: 'cc' }
type ObjectKeys = keyof typeof record // "a" | "b" | "c"
那么,如何将上述 object 的 values 作为类型呢?有如下方法:
const record = { a: 'aa', b: 'bb', c: 'cc' } as const // 注意 as const 不可少,否则提取出来的是 string 类型
type ObjectValues = typeof record[keyof typeof record] // "aa" | "bb" | "cc"
如果 object 的 value 是其他类型呢?
const record = {
a: { v: 'aa' },
b: { v: 'bb' },
c: { v: 'cc' },
} as const
type ObjectValues = typeof record[keyof typeof record]['v'] // "aa" | "bb" | "cc"
同理,这样的方法也可以用于提取数据内容:
const array = ['a', 'b', 'c'] as const
type ArrayKeys = typeof array[number]
[END]