TypeScript中的类型工具
这部分内容不是很好懂,可以多练习几次
extends 的多种使用方式
类型继承
extends
可以表示必须包含后面的类型
1 | function user<T extends { id: number; render: (x: number) => number }>( |
extends 类型条件判断
窄类型 extends 宽类型 ? xxx : xxx
判断窄类型是否从属于宽类型,可以就为 true,否则为 false
1 | type a = { name: string; age: number }; |
对泛型进行条件判断分配类型
使用[]包裹表示完全比对 [T] extends [a]
1 | type a = string | undefined; |
Exclude 过滤
从左侧联合类型中过滤掉右边的类型,保留左侧类型比右侧类型中多的类型
1 | type a = number | boolean; |
Extract
和 Exclude 作用相反。只保留右侧类型声明中的类型
1 | type a = number | boolean | string; |
Pick
type PICK<T,U extends keyof K> = {[P in U]: T[P]}
在类型中提取某几个组成新类型
1 | type User = { name: string; age: number; site: string }; |
Partial
将属性类型转为可选
1 | type User = { name: string; age: number; site: string }; |
Record
快速生成具有属性的类型
1 | type User = Record<string, string | number>; |