- 为解决any类型污染其他变量的问题,ts3.0引入了unknown类型
- 他与any类型含义相同,便是类型不确定,可能是任意类型,但是它的使用有一些限制,不像any那样自由,可以视为严格版的any
- unknown类型只能赋值给any类型和unknown类型,这样就避免了污染问题
- 不能直接调用unknown类型变量的方法和属性
- unknown类型变量能够进行的运算是有限的,只能进行比较运算(==、===、!=、!==、||、&&、?)、取反运算(!)、typeof运算符、instanceof运算符这几种,其他都会报错
- 只有经过“类型缩小”unknown类型变量才可以使用,即使用typeof等确定类型为number或string或其他
- unknown是ts中的顶层类型,即unknown包含所有其他类型