问答题935/1593ts中any和unknown有什么区别?

难度:
2021-11-17 创建

参考答案:

unknown 和 any 的主要区别是 unknown 类型会更加严格:在对 unknown 类型的值执行大多数操作之前,我们必须进行某种形式的检查。而在对 any 类型的值执行操作之前,我们不必进行任何检查。

举例说明:

1let foo: any = 123; 2console.log(foo.msg); // 符合TS的语法 3let a_value1: unknown = foo; // OK 4let a_value2: any = foo; // OK 5let a_value3: string = foo; // OK 6 7let bar: unknown = 222; // OK 8console.log(bar.msg); // Error 9let k_value1: unknown = bar; // OK 10let K_value2: any = bar; // OK 11let K_value3: string = bar; // Error

因为bar是一个未知类型(任何类型的数据都可以赋给 unknown 类型),所以不能确定是否有msg属性。不能通过TS语法检测;而 unknown 类型的值也不能将值赋给 any 和 unknown 之外的类型变量

总结

any 和 unknown 都是顶级类型,但是 unknown 更加严格,不像 any 那样不做类型检查,反而 unknown 因为未知性质,不允许访问属性,不允许赋值给其他有明确类型的变量。

最近更新时间:2024-08-10

赞赏支持

预览

题库维护不易,您的支持就是我们最大的动力!