【九月打卡】第18天 Typescript any 类型和 unknown 类型
课程名称:2小时极速入门 TypeScript
课程章节: 第3章 TypeScript 基础 3-7 Any 与 unknow
主讲老师:阿莱克斯刘
课程内容:
今天学习的内容是 Typescript 的 any 类型和 unknow 类型。
any 类型
any
就是任意类型。写代码时如果不确定属于什么类型,就可以将其定义为 any
类型。
any
类型属于动态类型,它支持和兼容所有的类型。
let anyValue:any;
anyValue = 10;
anyValue = 'kw';
anyValue = true;
anyValue = {};
anyValue();
anyValue.toUpperCase();
定义了一个 any
类型的变量,可以对其赋任何值,甚至当作函数调用,在编辑器中都不会报错。但是当代码执行,就会报错了:TypeError: anyValue is not a function。
这说明,any 作为动态类型,弱化了 TS 的类型能力,稍不注意就有可能出错。所以开发中尽量避免使用 any
。
TS 强化了 JS 的类型能力,对于一些初学者并不能很好的利用类型系统,于是可能遇到类型的问题就使用 any
类型。虽然代码不报错了,但也失去了类型的能力。所以人们也会把 Typescript
叫做 Anyscript
。
这其实一个辩证的问题。JS 之所以经久不衰就是由于其灵活的写法和兼容性,可以快速完成一个功能需求。而 TS 强化了类型能力之后,也就减弱了 JS 的灵活性,更适合在大型项目中使用。
unknown 类型
unkonw
类型是未知类型,它是 any
类型对应的安全类型,也就说它不保证类型,但能保证类型安全。
同样还是上面的代码,改为 unkonw
类型,可以发现编辑器开始报错了:
在使用 unkonw
类型时,需要对类型加以判断再去使用,从而保证类型的安全:
let anyValue:unknow;
anyValue = 10;
anyValue = 'kw';
anyValue = true;
anyValue = {};
if(typeof anyValue === 'function') {
anyValue();
}
if(typeof anyValue === 'string') {
anyValue.toString();
}
课程收获
这节课学习了 Typescript
的 any
类型和 unkonw
类型,它们都简化了在 TS 中对类型的使用,方便快速开发,相比于 any
,unkonw
类型更加安全。
共同学习,写下你的评论
评论加载中...
作者其他优质文章