我一直认为学习是知识的累加,而前端技术也是进步的.所以学习的重点就是,'它有什么不同,它好在哪里'.这要求我们必须结合之前的经验和知识去学习一门新技术,而不是无情的复制粘贴机器.
首先,ts的官方定义是
TypeScript 是一个编译到纯 JS 的有类型定义的 JS 超集。
这里有几个关键词,'编译'、'JS'、'类型定义'、'超集'.单独看下来似乎都明白,结合起来也就模糊了.但是很明显,它是js的衍生.所以,我们要结合js去学习.
我在学习它的语法之前特意去找了'为啥要学ts',搞明白了这个就知道了它的核心.得到的结果是这个
因为它有类型定义
js是弱数据类型语言,所以在数据类型这里会有不少坑.比如
var a=1 var b='2' var c=3 console.log(a+b) //12 console.log(a+c) //4
当变量够多,代码够长的时候.变量的数据类型有时会发生改变,而我们并不清楚,就会导致一系列不易查找的bug.这时候就需要对数据类型进行限制,这就是ts做的事.
另一方面,光定义并没有用,还需要在编译的时候进行检测,这就是VsCode等编译工具做的事,它能根据ts的定义对数据类型进行检测和提醒.减少了此类bug的出现.
示例:
js:
function yy(a, b, c, d) { return a + '总共有' + (c + b) + '个' + d; } document.write(yy('我', 1, 2, '苹果'));
ts:
function yy(a:string,b:number,c:number,d:any){ return a+'总共有'+(c+b)+'个'+d } document.write(yy('我',1,2,'苹果'))
以上就差不多是ts的基本作用了,因为写ts本身就需要在原来的js代码增加代码量.而且ts的作用一方面是开发时的检测,另一方面是维护时的指引.所以它更适合大型的、重复维护的、多人开发的项目.小项目用ts反而得不偿失.