作者 | 马靖
day day up, bye bye bug
最近在做一个新项目,技术大佬告知前端要用 TS 。前端小白的我内心疑惑“弱类型语言它不香嘛,为什么选择 TS ?” 为了紧随大佬的流星大步,拥抱变化。带着这个疑惑我积(被)极(破)主(营)动(业)点开了谷歌,开始了地毯式的搜索。
1、TS 的前世今生
1.1 背景故事
2010 年微软公司的一个深夜,拥有黑眼圈的程序员们加班改 bug ,其中一个资深程序员抱怨“这声明的变量不写类型注释,还偷偷改数据类型,写的人也太不靠谱,这维护难搞哦”。正巧被路过的老板听见,第二天微软决定以该程序员为首,成立一个紧急小组开发一门新语言TypeScript
,需求是提升大型 JS 项目的可靠性和可维护性。TS 从 2010 年开始研发后一直作为微软的内部项目使用,直到 2012 年,发布了第一个公开版本【 TypeScript 0.8 版 】后,受到前端程序员的激烈推崇点赞,纷纷学习使用。自此 TS 就开始了漫漫迭代之路,时至今日仍然大受欢迎。
1.2 TS 是什么
这个故事告诉我们 TS 存在的目的,是为了提升大型 JS 项目的可靠性和可维护性。那 TS 到底是什么?官方定义来了 TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. Any browser. Any host. Any OS. Open source. 翻译过来:TypeScript 是 JavaScript 的一个超集,可以编译为纯 JavaScript ,在任何浏览器、集群(服务器)、操作系统上面都可以运行,而且还开源。一张图来了解它的大小。
前端程序员:开发工具用 VScode;包管理用 npm;代码用 TS;社区用 GitHub。一家人就是要整整齐齐(浏览器就算了)。我们可以将 TypeScript 看作是 JavaScript 之上的一个外壳,拥有类型的 JavaScript ;TS = Type + Javascript。看到这里不禁有疑惑,它到底做了什么能成为 JS 超集,既然可编译为 JS 又是怎么提升大型 JS 项目可靠性和可维护性的呢?
1.3 TS 做了什么
扩展 JS 数据类型
TS 中数据类型:boolean 类型、 number 类型、 string 类型、 Object 类、 function 类、 array 类型、 undefined、 null、 Symbol、 tuple 类型(元组类型)、 enum 类型(枚举类型)、 any 类型(任意类型)、 void 类型(没有任何类型)、 never 类型(永不存在