类型推论

定义一个变量并初始化后,将鼠标滑到变量名上,可以看到ts对变量名的类型推断

很多时候,在TS能推断出变量类型的情况下,是没有必要显示声明类型的

如果没有指定初始值,就会被TS推断为any类型

类型别名

type

可以使用type关键字给一个类型取别名,以便语义化和复用

1
2
3
4
5
6
// 给联合类型取了别名t
type phone = string|number
// 类型别名可以直接用了
let p:phone
t = "yajue" // OK
t = 114514 // OK

类型别名和interface接口的区别:

  • 接口可以继承,而类型别名不能
  • 类型别名可以定义为联合类型,而接口不能
  • 重名接口会合并,而重名类型别名不会

extends

extends在type中是包含的意思,左边的值会作为右边类型的子类型

左边的number类型和右边的number类型同级,满足包含条件

左边的number类型级别比右边的never类型大,不能构成包含条件