TypeScript学习—2:任意类型

Any 类型 和 unknown 顶级类型

(1)没有强制限定哪种类型,随时切换类型都可以 我们可以对 any 进行任何操作,不需要检查类型。

let test:any = 123
test = '123'
test = true
test = null

(2)声明变量的时候没有指定任意类型默认为any

let test
test = '123'
test = true
test = null

(3)TypeScript 3.0中引入的 unknown 类型也被认为是 top type ,但它更安全。与 any 一样,所有类型都可以分配给unknown
unknow unknow类型比any更加严格当你要使用any 的时候可以尝试使用unknow

//unknown 定义任何类型的值
let val: unknown;
 
val = true;             // OK
val = 22;               // OK
val = "Hello";    // OK
val = [];               // OK
val = {};               // OK
val = null;             // OK
val = undefined;        // OK
val = Symbol("Hello");   // OK
 
//这样写会报错unknown类型不能赋值给其他类型
let name1:unknown = '123'
let name2:string = name1
 
//这样就没问题 any类型是可以的
let name3:any = '1'
let name4:string = name3   
 
//unknown可赋值对象只有unknown 和 any
let y:unknown = '1'
let z:any= '2'
 
z = y

// 类型为any类型在对象没有这个属性的时候还在获取是不会报错的
let obj:any = {b:1}
obj.a
 
 
// 类型为unknow 是不能调用属性和方法
let obj:unknown = {b:1,c:():number=>333}
obj.b
obj.c()

在上面,我们对比了 any 和 unknown 的区别,我们再来总结一下:

二者都是可以赋值给任意类型的, any 会绕过类型检查,直接可用,而 unkonwn 则必须要在判断完它是什么类型之后才能继续用。像 any 这个这么锋利的刀,还是能少用就少用,不然就失去了TS类型检测的作用。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小熊pc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值