小知识,大挑战!本文正在参与“程序员必备小知识”创作活动
本文同时参与掘力星计划,赢取创作大礼包,挑战创作激励金
前言
前期回顾
基础知识
TS中的类型层次
划重点
-
下层类型的值可以赋给上层类型的变/常量
-
unknown类型的变/常量可以指向任何类型的值。
-
不存在never类型的变量( never是空集 )
Top/Bottom Type
对比:不同语言的Top Type和Bottom Type
any
1、any比较特殊,它既是Top Type又是Bottom Type
-
也就是说:any类型的变量/常量与任何其他类型变量/常量 可以互相赋值
-
但any是类型不安全的、无语言服务的、所以应该尽量避免使用
2、any具有传染性
-
它会使它所触及的地方变得不安全(Type Unsafe),所以TS在3.0引入了类型安全的unknown类型作为Top Type 3、any会隐藏bug
-
因为没有类型信息,即便错误使用,也没有任何报错。
4、any会隐藏代码设计细节
- 丢失了对数据类型的设计
在tsconfig中开启strict模式或禁止隐式any
划重点
- 开启noImplicityAny尽量避免使用any
unknown
划重点
- 如果无法预知类型,不要用any,用unknown,收窄类型后再使用
布尔类型(boolean)
布尔类型只有两个元素:true和false
number类型
number包括:整数、浮点数、+Infinity(正负无穷 ), NaN
bigint类型
-
bigint是新引入的类型,可以表示任意大小的整数,number范围[- ( 2^53-1 ),2^53-1]
-
bigint字面量是在数字后面加小写"n" 。bigint支持 加+,减,乘*,除/,求余%,幂**
字符串类型(string)
符号类型(symbol)
- symbol是ES2015引|入的新的语言特性
对比 字符串字面量类型 VS unique symbol
对象类型(Object)
通过以下两点来理解以下对象类型
-
定义对象和定义对象类型;
-
获取对象keys和获取对象类型keys
数组类型(Array)
数组有两种注解方式:
-
T[]
-
Array<T>
接口泛型
元组(Tuple)
元组( Tuples )是数组的子类型。元组各索引位上的元素类型是确定的。
知识点:因为元组的创建方法和数组是一样的,所以元组必须显示注解。
[...string[]]等价于string[] ,但[string, ...string[]]不等价于string[],前者至少包含一个元素
枚举(Enum)
枚举本质上是一种映射。会在值空间产生一个包含该映射的对象。
枚举的合并:
枚举可以拆分成多段,还可以与同名namespace合并
常量枚举
-
常量枚举不会在值空间创建变量。
-
所有引用常量枚举的地方都被替换为对应的值
null,undefined,void,never
结语
如以上有错误的地方,请在评论区中指出,谢谢!
小可爱们看完点个赞再走一走~~