Skip to content

Latest commit

 

History

History
59 lines (40 loc) · 945 Bytes

映射类型.md

File metadata and controls

59 lines (40 loc) · 945 Bytes

何为映射类型

将一个类型作为参数,将其赋值给另外一个类型变量。

如何进行类型映射

通过keyof就可以遍历键名创建出一个新类型

type Animal = {
    name: string,
    age : string,
}

type MapAnimal<T> = {
    [key in keyof T]: [key]
}

type AnotherAnimal = MapAnimal<Animal>

映射类型修饰符

readonly,设置属性只读

?,设置属性可选

配合映射类型修饰符,可以对类型进行一些修改

为属性增加readonly且改为可选

type Animal = {
    name: string,
    age : string,
}

type MapAnimal<T> = {
    readonly [key in keyof T]?: [key]
}

type AnotherAnimal = MapAnimal<Animal>

为属性去除readonly且改为必选

type Animal = {
    name: string,
    age : string,
}

type MapAnimal<T> = {
    -readonly [key in keyof T]-?: [key]
}

type AnotherAnimal = MapAnimal<Animal>