微软发布了一款 JavaScript 超集的编程语言并取名为 TypeScript,由于 TypeScript 是 JavaScript 的严格超集,因此任何 JavaScript 都是合法的 TypeScript(非常像 C 和 Objective-C 的关系)。TypeScript 为 JavaScript 带来了强大的类型系统和对 ES2015 的支持,它的编译工具可以运行在任何服务器和任务系统上。
事实上 ES2015 发布之后 JavaScript 取得了巨大的进步,但随着设备性能的提升以及 JavaScript 在应用层上不断占据了重要的位置,对于大型项目,人们显然需要更强大的语言级别的支持(微软发现外部客户在开发大规模 JavaScript 应用的过程中遭遇的语言本身的短板)。
类型系统实际上是非常好的文档,增强了编辑器在智能提示,跳转定义,代码补全 等方向上的功能,并且在编译阶段能发现大部分的错误,对于大型工程的代码可读性和可维护性起到了了不起的作用。
TypeScript 的流行趋势
事实上 TypeScript 拥有活跃的社区,大部分第三方库都有提供 TypeScript 类型定义文件,甚至知名的前端库都完全使用 TypeScript 来进行开发,比如 Google 的 Angular,我们可以通过一些数据来了解 TypeScript 的流行趋势:
TypeScript 的优势和收益是什么
TypeScript 官网上列了很多它的优势:
- 类型系统可在编译阶段发现大部分的错误;
- 类型系统也是一个很直观的编程文档,可以查看任何函数或API的输入输出类型;
- 类型系统增强了编辑器或 IDE的功能;
- TypeScript 可以自动的推导类型;
- 一切 JavaScript 都是合法的 TypeScript 降低了使用成本;
- TypeScript 拥抱 ES2015 以及 ESNext 草案规范;
- 几乎第三方库都有 TypeScript 类型定义文件。
rollbar 于 2018年统计了前端项目 Top10 的错误:https://rollbar.com/blog/top-10-javascript-errors/,事实上 TypeScript 在编译期的类型检查能解决上述 80% 的问题,对于大型工程来说收益是非常明显的。
如果你有一个需要长期维护的工程,那么类型系统在可读性和可维护性上拥有比 JavaScript 更强大的动能,在良好的编程语境下,在稳定的工具链帮助下,TypeScript 可以说是目前唯一较好的选择。
当然,凡事都有两面性,TypeScript 有一定的学习成本,比如:Interfaces、Generics、Enums 等前端工程师不是很熟悉的概念,短期内多少会增加一些开发成本,集成和构建一些库会有一定的工作量,比如我们用 React 来开发一个前端工程,那么你就需要进行一些配置,当然你也可以直接使用 create-react-app 来创建一个 TypeScript + React 工程