先来看下基础实现 clone,把 T 里面的都拷贝一次:
1 | type cloneT<T> = { |
Partial
用法
将类型定义的所有属性都修改为可选
1 | type Foo = { |
实现
1 | type Partial<T> = { |
类似Partial的实现,还有 Required,Readonly
Required 的作用是将传入的属性变为必选项, Readonly是将所有属性定义为自读,源码如下
1 | type Required<T> = { |
类似
-?
,readonly
, 同理还有-readonly
Record
用法
以 typeof 格式快速创建一个类型,此类型包含一组指定的属性且都是必填
1 | type Coord = Record<'x' | 'y', number>; |
实现
Readonly
不管是从字面意思,还是定义上都很好理解:将所有属性定义为自读
1 | type Coord = Readonly<Record<'x' | 'y', number>>; |
Pick
从类型定义的属性中,选取指定一组属性,返回一个新的类型定义。
1 | type Coord = Record<'x' | 'y', number>; |
一个很实用的实现就是 clone,把 T 里面的都拷贝一次
1 | type cloneT<T> = { |
重要的就是这个in操作符,你完全可以把它理解为就是for…in,也就包含了遍历的过程
Partial
clone再可选
1 | type Partial<T> = { |
参考文献