所谓 keyof 关键字代表它接受一个对象类型作为参数,并返回该对象所有 key 值组成的联合类型。

    1. interface IProps {
    2. name: string;
    3. age: number;
    4. sex: string;
    5. }
    6. // Keys 类型为 'name' | 'age' | 'sex' 组成的联合类型
    7. type Keys = keyof IProps

    看上去非常简单对吧,需要额外注意的一点是当 keyof any 时候我们会得到什么类型呢?
    小伙伴们可以稍微思考下 keyof any 会得到什么样的类型。

    1. // Keys 类型为 string | number | symbol 组成的联合类型
    2. type Keys = keyof any

    其实这是非常容易理解,any 可以代表任何类型。那么任何类型的 key 都可能为 string 、 number 或者 symbol 。所以自然 keyof any 为 string | number | symbol 的联合类型。