Typescript 如今已经成为非常火的开发语言,很多公司都将它作为首要的项目搭配。自己也是在使用中,发现了国外工程师非常严苛的要求用对 unknown
和 any
。
unknown 类型,顾名思义:任何值都可以分配给unknown类型,但如果没有类型断言,unknown则不能分配给除自身和any类型之外的任何值。unknown同样,如果没有首先断言或将其限制为更精确的类型,则不允许对类型设置为 as 的值进行任何操作。
any 则是当变量的类型未知或变量的类型尚未定义时使用的泛型类型
其实我们看一段代码就很好理解了:
let vAny: any = 10; // We can assign anything to any
let vUnknown: unknown = 10; // We can assign anything to unknown just like any
let s1: string = vAny; // Any is assignable to anything
let s2: string = vUnknown; // Invalid; we can't assign vUnknown to any other type (without an explicit assertion)
vAny.method(); // Ok; anything goes with any
vUnknown.method(); // Not ok; we don't know anything about this variable
用更加通俗的话讲:
unknown: 我不知道,但是我不会滥用
any: 我不关心,请跳过