第七节:在 TypeScript 中什么是类型推论?

Posted web前端教程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第七节:在 TypeScript 中什么是类型推论?相关的知识,希望对你有一定的参考价值。

上一节,我们学习了TypeScript中的一种新的数据类型:元组Tuple。没学习上一节的同学可以戳: 


这一节,我们一起来学习一下TypeScript中的:类型推论。 


第五节我们介绍的时候有讲过,我们定义一个变量的时候,如果没有给它指定类型,也没有给它赋值,那么这个变量就会被当作任意值any类型来处理,可以给它赋任意类型的值。 


任意值any类型

回顾一下:



  //未指定任何类型
  let notSureType;

  //允许赋string类型的值
  notSureType = 'hello';

  //允许赋number类型的值
  notSureType = 2;


 

相当于:

 


  
//指定为any类型
 let notSureType:any;

  //允许赋string类型的值
  notSureType = 'hello';

  //允许赋number类型的值
  notSureType = 2;


 

但以上的写法中,有一点需要注意的前提条件是:定义变量的时候,变量是没有被赋值的。如果在定义变量的时候没有指定类型,但又赋值了,会发生什么情况呢?

 


//未指定变量类型,且进行赋值
let sentence = "hello 前端君";


上面的一行代码,我们看到,变量 sentence 定义的时候并没有指定类型,但已赋值字符串:”hello 前端君”


这种情况,和第一个任意值any案例声明变量未指定类型,未赋值有什么区别呢?


我们对变量 sentence 做一个操作就知道了:

 


//未指定变量类型,且进行赋值
let sentence = "hello 前端君";

//赋数值类型的值:100
sentence = 100;
//结果:编译报错

 

我们看到了,编译报错。


提示:Type 'number' is not assignable to type'string'


意思是:数值number类型的值不能赋值给字符串string类型的变量。 


奇怪了,我们并没有给变量 sentence 指定类型,为什么现在说它是string类型呢? 

类型推论

这是因为TypeScript的类型推论在起作用了。 


类型推论:如果没有明确的指定类型,那么 TypeScript会依照类型推论的规则推断出一个类型。


很明显,以上的案例中的 sentence 被推论为字符串string类型,而非任意值any类型,所以后续给它赋数值number类型的值7时,会报错。 


这一节主要是提醒大家,TypeScript中,当你去定义一个变量时,没有指定类型时候,是否给它赋值,是会影响它的类型的。 


前端君给大家作个图,让大家更直观的理解它们的区别:


(一目了然)


热门文章

TypeScript系列,正在连载 。。。

 第1章节:

 第2章节:

 第3章节:

 第4章节:

 第5章节:

 第6章节:

 后续章节,陆续更新,敬请期待...



扩展阅读

 原创教程:

 原创教程:

 原创教程:

 附加习题:

 附加习题:



聊聊职场

 职场感悟:

 感到迷茫:

 薪资待遇:

 搞笑黑话:

 职业自由:



资源推荐



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


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


 

以上是关于第七节:在 TypeScript 中什么是类型推论?的主要内容,如果未能解决你的问题,请参考以下文章

第七节课:字典

TypeScript入门-枚举类型推论

LayaBox---TypeScript---类型推论

Linux第七节课

第七节——函数

OC第七节——内存管理