索引类型:
keyof :索引类型查询操作符(返回所有的属性名)
T[K]: 索引访问操作符
![](https://img.haomeiwen.com/i13091615/b8fbc3bf1e2e4f73.png)
映射类型:
从旧类型中创建新类型(内部使用了 for .. in)
下面的PersonReadonly和PersonPartial分别为接口Person的所有属性追加了只读和可选属性
![](https://img.haomeiwen.com/i13091615/ef5856b5385249b8.png)
映射类型在元祖中的使用
![](https://img.haomeiwen.com/i13091615/6ef326eb972d1fd1.png)
由映射类型进行推断:(拆包)
![](https://img.haomeiwen.com/i13091615/f6b828f40d58fc63.png)
![](https://img.haomeiwen.com/i13091615/c1bba7312bea3ef4.png)
unknow类型:
TypeScript 3.0 新增的一种顶级类型,具有以下特点:
1.任何类型都可以赋值给unkonw类型
2.没有类型断言或基于控制流的类型细化时,unknow不能进行操作,且只能赋值给any和unknow
3.unkonw与其他类型组成交叉类型,等于其他类型
4.unkonw与其他类型组成联合类型,等于unkonw
5.never是unkonw的子类型
条件类型:
T 如果不是string,number,boolean,undefined,function类型,就默认为对象
![](https://img.haomeiwen.com/i13091615/5c61b550cb8a473c.png)
[keyof T]返回所有类型不为never的属性名
![](https://img.haomeiwen.com/i13091615/6578fe100026ef6a.png)
infer关键字:类型推断
![](https://img.haomeiwen.com/i13091615/e6b6a45209378f57.png)
系统预定义的有条件类型(源码在lib.es5.d.ts文件)
![](https://img.haomeiwen.com/i13091615/bea8619d60f41ae1.png)
网友评论