用大白话让你理解TypeScript的要点.(一)
一.名字的解释
- 首先学习一个东西的时候,得搞明白它的id是什么意思。Type 就是类型的意思,我要约束你变量的声明的时候的类型,不让你那么随意定义变量了。
- Ts相当于一个新的语言,js它相当于一个子集,你不能再用js的思维去思考一个变量的定值。
- 首先我们要知道,js ,java是一门高级程序语言,这个高级并不是传统意义上更上档次的理解。这个高级的意思在这里更像是更加简单上手的意思,而C,C++被称为低级语言,这里的低级更像是接近计算机硬件底层的意思。
- 用我学C三年朋友的开玩笑话来讲:“你们这些什么java啊,js啊,最终还不都得转换成C?然后再进行计算机硬件的交互?哪像我们,我们就直接跟硬件打交道的。知道为什么外挂用c开发吗?别说什么网页了,我直接能操作你电脑把你浏览器给你删了。”其实这句他无心的玩笑话,让我对计算机的原理有了一个更深刻的理解。我们都知道其实电脑上编写的代码最终都是需要转换成010101这样二进制数据进行操作的,为什么C快?因为C直接就可以转换成0101进制而高级语言还需要中间的一个编译步骤,然后再转换成01010(你暂时可以这样理解)。就像开车从起点A---->到终点B(这里指计算机硬件,走过的路就是编译的过程),C语言一路畅通无阻,直接到达。而java高级语言需要经过一个中间站点X,来进行一次简单的编译,最后到达终点B。A------X------B。
二.Ts的关键字
1.当你有简单了解过Java的时候,你会发现Ts和java简直一摸一样。
2.这里Ts最关键的核心就是 :,对没错,就是冒号,万物冒号。
3.在正常编写代码的时候,你可以按照先写js的格式去书写你的变量,我知道刚开始就有人想完全拥抱Ts的思想,但是往往的情况就是熟练JS的格式,你刚开始去写Ts会非常难受,经常忘记冒号。其实在业务中我也是先写js的格式,当组件内部变量都确定好了,再回过头去补充type或者interface。如下:
等我这个页面差不多了,回过头来补充即可。
4.数组格式的约束:
其实思想上一定要灵活去转变,不要学习了Ts就想着刚开始就直接给它冒号约束类型,这是不可能的,因为后端返回给你的数据你只有收到了才能确定。所以你就先按照js写行不?求求你了
数组场景一
假设这是后端给我的数据,ok,我确定了里面只有数字类型,那么我再去约束就行了。
这里你还没告诉Ts解析器这个变量是什么类型的,不然他会默认为是基本类型,所以我们需要告诉他是数组,也非常简单,加个【】即可。
理清整段代码的意思:我定义了一个数组Arr
,我确定它是一个数组,我加上了[]
,里面只放数字,我在[]
前加了number
。
数组场景二
对象类型的数组,也是后端数据最常见的。老规矩,还是按照js代码写,因为你不知道里面到底有什么属性,属性值的类型。
ok假设我已经确定了,我们还按照上面的思路来写。首先是对象数组,这是确定的。
No,不可以这样。到这里其实思路有些不同,我们需要先去考虑数组里面对象的类型,然后再反过来添加到数组的约束条件里。因为你先是根据数组里的数据类型,再去判断数组的类型。所以我们需要先给对象添加类型约束。
对象格式确定好了,直接告诉NotSureArr,你这个数组就存放这个对象格式的数据就完事了。
如果数据里还有age,sex之类的这么办呢?还是那个思路,不要先去想着改type里的东西,先把你的数据写好,它报错就让它报错。
然后再去书写type,一定记住,先有数据!再有数据类型!
数组场景三
我不确定有些数据到底有没有什么属性。方这个对象数据,它压根就没有sex属性,我也不想给它加sex属性,但是第一个对象有sex属性,这可咋办?如下:
很简单的只需在不确定的属性上添加 ? 即可。sex?: string
数组场景四
我只确定有哪些属性,不确定属性具体类型。
这种场景不常见,因为你这样写,你还不如直接不约束条件,直接写JS格式的就完事了。何必折腾写Ts呢?
转载自:https://segmentfault.com/a/1190000041834018