第五节:简单又强大的数据类型:any任意值

上一节我们介绍了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进阶教程》

 附加习题:《ECMAScript 6 教程》的 2套

 附加习题:《Vue2.0基础教程》的 1 套

聊聊职场

 职场感悟:混口饭吃,谈不上喜欢

 感到迷茫:我很努力,但依然很迷茫

 薪资待遇:那么点工资,能招到人吗?

 搞笑黑话:互联网公司黑话,搞笑到爆

 职业自由:程序员职业自由的6个阶段

资源推荐

其实学好技术并不难,架构师免费分享全网全套最新web前端、JavaScript、HTML5、PHP、数据库……等视频资料!

[总价值超3万!]年薪35万以上的大牛几乎都看了!

加微信: abc15689893 免费领取,由于领取的朋友比较多,所以加微信时一定要备注:7,否则很难通过。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值