上一节我们介绍了TypeScript的5中数据类型,我们知道,一旦变量被声明定义为某种类型就不能赋其他类型的值(除了Null类型和Undefined类型外)。
也许你会有疑问了,有时候我声明一个变量,如果它是一个动态的数据类型,这时候我还不能确定它的值是什么类型的,有可能是数值number类型的,也有可能是字符串string类型的,亦或是其它类型的,这种话情况我该怎么去声明它的类型呢?
任意值类型
这种情况下,TypeScript为我们提供了一种类型叫任意值类型:any。如果定义为any类型的变量,在编译阶段,则不会对它们的类型进行检测,让他们直接通过编译阶段。
我们再来复习一下,如果定义一个普通的number类型的变量:
let notSureType:number = 4;
//赋字符串类型的值
notSureType = 'hello';
//错误提示
//Type 'hello'is not assignable to type'number'
如我们所料,变量被赋一个字符串类型的值是不允许的。但是,如果是any类型的,则允许被赋任何类型的值。
let notSureType:any = 4;
//赋字符串类型的值
notSureType = 'hello';
//允许,赋值成功
赋值成功,变量notSureType的类型也由number类型变成了string类型。
any类型是一种强大的兼容存在的JavaScript库的类型系统。它允许跳过TypeScript的编译时类型检查。一般用它来定义一个未知类型的变量,并可以更改它的类型。
未声明类型
特别注意一下,如果我们声明了一个变量,但是没有指定它的类型,这种情况下,它会被当作是any任意值类型处理。
//未指定任何类型
let notSureType;
//允许赋string类型的值
notSureType = 'hello';
//允许赋number类型的值
notSureType = 2;
相当于:
//指定为any类型
let notSureType:any;
//允许赋string类型的值
notSureType = 'hello';
//允许赋number类型的值
notSureType = 2;
允许访问任何属性和方法
如果我们对一个数值进行取两位小数的操作,相信你首先想到的办法是使用 .toFixed() 方法,它是数值类型变量才有的方法。如果你对一个字符串类型的变量使用 .toFixed() 方法,则会很危险,因为它不存在此方法。
这种情况一般会发生在变量的类型不确定的时候,一旦变量的类型是string类型,而我们还傻傻地以为它是number数值类型,调用了它的 .toFixed() 方法。此时,程序就会报错了。
此时,你刚刚学习的any类型可以帮到你了,你把变量定义为任意值any类型的时候,就可以访问任何属性和方法,即使变量不存在此方法,也不会报错。
//定义string类型的变量
let notSure:any = '3.1415926';
//调用.toFixed()方法
notSure.toFixed(2);
变量notSure是any类型,但是我们调用了 .toFixed() 方法,程序并不会报错。这一点很好地为我们兼容了变量类型不确定带来的bug。
本节小结
理解any任意值的设计初衷,掌握它的使用方法,以及适用场景。
热门文章
扩展阅读
原创教程:《ECMAScript 6 教程》
原创教程:《Vue2.0基础教程》
原创教程:《Vue2.0进阶教程》
附加习题:《Vue2.0基础教程》的 1 套
聊聊职场
职场感悟:混口饭吃,谈不上喜欢
感到迷茫:我很努力,但依然很迷茫
薪资待遇:那么点工资,能招到人吗?
搞笑黑话:互联网公司黑话,搞笑到爆
职业自由:程序员职业自由的6个阶段
资源推荐
其实学好技术并不难,架构师免费分享全网全套最新web前端、JavaScript、HTML5、PHP、数据库……等视频资料!
[总价值超3万!]年薪35万以上的大牛几乎都看了!
加微信: abc15689893 免费领取,由于领取的朋友比较多,所以加微信时一定要备注:7,否则很难通过。