TypeScript学习(二):任意类型及推论

上文我们提到typescript(以下统称为“TS”)中原始数据类型的一些声明方式,不难看出,TS中的数据定义方式跟JS是大同小异的,但是在JS中,我们常常会声明一个变量,如:

var a;  // 声明变量a

此时,我们在后台打印a的值是undefined,因为我们定义了变量a,但是没有赋值,在声明之后,我们可以随意给变量a赋值,例如:

a = 1; 或者 a = 'string'; 或者 a = true;

在TS中,为了便于我们开发,我们同样可以这样声明变量,然后给它赋任意类型的值,这样也便于我们开发,格式如下:

let a; a = 1;      // 第一种方式:声明时不指定任意数据类型,随后赋值任意类型
let a : any = 1;  a = 'string'; // 第二种方式:指定类型为any,也可赋值任意类型

到这里,我们在开发中常用的几种数据定义方式也就介绍完毕。

有的童鞋会问,在TS中定义数据还要标注类型,这样不是很繁琐,下面我们就来说一下在TS中,有一种叫做数据类型推论的特性,类似于JS中的typeof()的方式,如下:

let a = 1; // 我们定义变量a的值为1,此时值1为数值类型

我们在上面定义变量a的值为1,接下来我们直接给赋另一种类型的值:

a = 'string';  // 随后再定义变量a的值为字符串类型'string'

这个时候我们编译ts文件时会发现,编译报错:"index.ts(2,1): error TS2322: Type 'string' is not assignable to type 'number'.",根据报错我们可以发现,在第一次定义变量a为数值1时,TS中自动将变量a的类型定义为数值类型,所以我们在后面再定义为其它类型时,TS时不能正常编译的。

所以我们得出结论,TS在编译过程中,会自动给为定义的变量默认加上一个类型属性,这个就是TS中的数据类型推论,而且是以最先赋值的数据类型为准(let a;定义方式除外,此定义方式为任意数据类型定义)。

 

 

到底啦!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值