第七节:在 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中,当你去定义一个变量时,没有指定类型时候,是否给它赋值,是会影响它的类型的。
前端君给大家作个图,让大家更直观的理解它们的区别:
(一目了然)
热门文章
第1章节:
第2章节:
第3章节:
第4章节:
第5章节:
第6章节:
后续章节,陆续更新,敬请期待...
原创教程:
原创教程:
原创教程:
附加习题:
附加习题:
职场感悟:
感到迷茫:
薪资待遇:
搞笑黑话:
职业自由:
其实学好技术并不难,架构师免费分享全网全套最新web前端、javascript、html5、php、数据库……等视频资料!
[总价值超3万!]年薪35万以上的大牛几乎都看了!
以上是关于第七节:在 TypeScript 中什么是类型推论?的主要内容,如果未能解决你的问题,请参考以下文章