interface Person { name: string age: number height: number } type Person1 = Pick<Person, 'age' | 'height'> // 等价于 type Person1 ={name: string, height: number}
Omit<T, U> :从T中剔除掉U属性,返回剩下的所有属性。
1
type Person2 = Omit<Person, 'name'> // 等价于 type Person2 ={age: number, height: number}
type TypeTodo1 = Record<Page, PageInfo> // 等价于 type TypeTodo1 = { home: PageInfo, about: PageInfo, contact: PageInfo}
type perf = Record<string, any>;//会被编译成下面的 perf1 // 等价于 type perf1 = { [x: string]: any; }
Exclude<T, U> :从T中剔除可以赋值给U的类型。
1
type E = Exclude<string | number, string>
Extract<T, U> :提取T中可以赋值给U的类型。
1
type I = Extract<string | number, string>;
Partial :返回所有属性变成可选的,即属性可传可不传。
1 2 3 4 5
type Animal = { species: string; age: number; } type Cat = Partial<Animal> // 等价于 type Cat ={ species?: string | undefined, age?: number | undefined }
keyof T :获取 T上已知的公共属性名的联合。
1 2 3 4
type Dog = keyof Animal; // 'species' | 'age' let dog: Dog = "species"; //编译成功 let dog1: Dog = "age"; //编译成功 // let dog2: Dog = "name"; //编译失败 不能将类型“"name"”分配给类型“keyof Animal”。
NonNullable : 从T中剔除null和undefined
1 2 3 4
type N = NonNullable<string | number | undefined | null>; // 删除null和undifined; let nm: N = 111; // 编译成功 let nm1: N = '1112'; //编译成功 // let nm2: N = null; //编译失败