学习TypeScrip2(Any 类型 和 unknown 顶级类型)

文章目录

any 和 unknown 都是顶级类型 top type,也就是所有类型的父类型

在这里插入图片描述

一、any

any代表任意类型, 是不做任何检查,相当于不使用 ts,不建议使用,使用 a as any as string 之类的,可以让类型检查通过,但是不建议使用。

let anys: any = 123;
anys = '123';
anys = true;

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

let anys;
anys = '123';
anys = true;

弊端如果使用any 就失去了TS类型检测的作用

二、unknown

unknown 代表未知类型,更加严格,在对 unknown 类型的值执行大多数操作之前,必须进行某种形式的检查。 unknown 因为未知性质,不支持属性访问,不允许赋值给其他明确类型的变量。【任何类型的数据都可以赋值给unknown,但是unknown不可以赋值给其他明确类型的变量,如string等,不支持属性访问】

  • 区别1:任何类型的数据都可以赋值给unknown,但是unknown不可以赋值给其他明确类型的变量,any可以
//unknown 可以定义任何类型的值
let value: unknown;

value = true; // OK
value = 42; // OK
value = 'Hello World'; // OK
value = []; // OK
value = {}; // OK
value = null; // OK
value = undefined; // OK
value = Symbol('type'); // OK

//这样写会报错unknow类型不能作为子类型只能作为父类型 any可以作为父类型和子类型
//unknown类型不能赋值给其他类型
let names: unknown = '123';
let names2: string = names;

//这样就没问题 any类型是可以的
let names: any = '123';
let names2: string = names;

//unknown可赋值对象只有unknown 和 any
let bbb: unknown = '123';
let aaa: any = '456';

aaa = bbb;
  • 区别2:unknow不支持属性访问,any可以
// 如果是any类型在对象没有这个属性的时候还在获取是不会报错的;
let obj: any = { b: 1 };
obj.a;

// 如果是unknow 是不能调用属性和方法
let obj: unknown = { b: 1, ccc: (): number => 213 };
obj.b;
obj.ccc();

学习TypeScrip3(接口和对象类型)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值