本章节和后续章节都以 Typescript 的口吻自述,就是这么自信(自恋)。
兵法云:知己知彼,百战不殆(语出《孙子·谋攻篇》)(一个前端开始聊兵法,瞎搞,凑字数)。引用此主要想说,要用我就先看看我漂亮的履历吧。
自我介绍
我是 Microsoft 公司注册商标(来头大,后台硬)。
我是 JavaScript 的一个超集,主要提供类型系统和对 ES6 的支持。
我可以编译成纯的 JavaScript 代码,支持任意浏览器,任意环境,任意系统并且是开源的,开源于 GitHub 上。
我还在不断的完善中,会不断有新的特性加进来,所以你得时常关注我的成长。
如果你对我一见钟情,那就好好了解熟悉我;
如果你对我爱的山无棱天地合,那就在项目中应用我;
如果你对我没感觉,那继续回去写你的 Javascript 吧。
我好在哪里
增强代码的可读性和可维护性
- 在编译阶段就可以发现大部分错误,总比在运行时候出错好,你说呢?
- 类型系统是最好的文档,大部分的函数看看类型的定义就可以知道如何使用了;
- 增强了编辑器和 IDE 的功能,比如代码补全、接口提示、跳转到定义、重构等;
我有包容心
.js
文件可以直接重命名为.ts
即可;- 可以定义从简单到复杂的几乎一切类型;
- 即使不显式的定义类型,也能够自动做出类型推论;
- 即使在我这边编译报错,也可以生成 JavaScript 文件;
- 兼容第三方库,即使第三方库不是用我写的,也可以编写单独的类型文件给我读取;
拥有强大活跃的社区
- 符合 ES6 规范,也支持部分 ESNext 草案的规范(有眼光);
- 大部分第三方库都有提供给我的类型定义文件(圈内有名,后台硬);
- Google 开发的 Angular2 就是用我来编写的(傲娇);
- ...
当然了,我也不是完美的
- 学习并熟悉我是需要一定的学习成本的,你需要了解什么是接口(Interfaces)、泛型(Generics)、类(Classes)、枚举类型(Enums)等前端工程师不是很熟悉的概念和定义;
- 短期会增加开发成本,要多写一些类型的定义,不过对于长期维护的项目,用我了就能够减少维护成本;
- 集成到构建流程需要工作量;
- 和一些库结合的还不是很完美(其实,不完美也是一种美);
客观地说
本章最后,我想对你说的是:根据公司、项目和团队等各种情况综合判断是否选择使用我,我是很有包容心的。