一般情况下,可以用 keyof 来获取类型,如下所示:

    1. const record = { a: 'aa', b: 'bb', c: 'cc' }
    2. type ObjectKeys = keyof typeof record // "a" | "b" | "c"

    那么,如何将上述 object 的 values 作为类型呢?有如下方法:

    1. const record = { a: 'aa', b: 'bb', c: 'cc' } as const // 注意 as const 不可少,否则提取出来的是 string 类型
    2. type ObjectValues = typeof record[keyof typeof record] // "aa" | "bb" | "cc"

    如果 object 的 value 是其他类型呢?

    1. const record = {
    2. a: { v: 'aa' },
    3. b: { v: 'bb' },
    4. c: { v: 'cc' },
    5. } as const
    6. type ObjectValues = typeof record[keyof typeof record]['v'] // "aa" | "bb" | "cc"

    同理,这样的方法也可以用于提取数据内容:

    1. const array = ['a', 'b', 'c'] as const
    2. type ArrayKeys = typeof array[number]

    [END]