TS09 unknow与any

any

any是代表所有可能的JavaScript值,对象、数组、函数、Error,以及任何你可能定义的值。

TypeScript中任何类型都可以归为any类型,折让any成为了类型系统的顶级类型,例如:

let value: any;

value = true;             // OK
value = 42;               // OK
value = "Hello World";    // OK
value = [];               // OK
value = {};               // OK
value = Math.random;      // OK
value = null;             // OK
value = undefined;        // OK
value = new TypeError();  // OK
value = Symbol("type");   // OK

本质上any是类型系统的逃逸仓,TypeScript允许我们对any类型的值执行任何操作,而无需执行任何形式的检查,这也就导致了我们很容易编写类型正确但是执行异常的代码,也就是说,使用了any就无法享受TypeScript大量的保护机制

所以TypeScript在3.0版本时推出了unknow类型

unknow

就像所有类型都可以归为any一样,所有类型都可以归为unknow,这使得unknow成为了除了any之外,TypeScript类型系统的另一种顶级类型

let value: unknown;

value = true;             // OK
value = 42;               // OK
value = "Hello World";    // OK
value = [];               // OK
value = {};               // OK
value = Math.random;      // OK
value = null;             // OK
value = undefined;        // OK
value = new TypeError();  // OK
value = Symbol("type");   // OK

unknow类型的变量赋值都被认为是类型正确的

但是当

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值