通过映射类型,我们可以通过一个旧的类型生成一个新的类型。
    比如说把一个类型中的所有属性变成只读。

    1. interface Obj {
    2. a: string,
    3. b: string,
    4. c: string,
    5. }
    6. // 将obj接口里面的属性都变成只读属性
    7. type ReadonlyObj = Readonly<Obj>
    8. // 这样Obj中的属性就都变成只读属性了
    9. type PartialObj = Partial<Obj>
    10. // 这样Obj中的属性就都变成可选属性了
    11. type PickObj = Pick<Obj, 'a' | 'b'>
    12. // 将a b抽取出来,形成一个新的类型
    13. // 上面的映射都是同态类型
    14. // 非同态映射
    15. type RecordObj = Record<'x'|'y',Obj>

    源码:/node_modules/typescript/lib/lib.es5.d.ts