第211题:为什么要使用 TypeScript ? TypeScript 相对于 JavaScript 的优势是什么?
TypeScript 是微软开发的一个开源的编程语言,通过在 JavaScript 的基础上添加静态类型定义构建而成。TypeScript 通过 TypeScript 编译器或 Babel 转译为 JavaScript 代码,可运行在任何浏览器,任何操作系统。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
为什么要使用 Typescript?
在没有
Typescript
以前,大部分项目都是使用原生Javascript
开发。而Javascript
天生是一门“灵活”的语言。所谓所谓“灵活”,表现在:而这些灵活通常导致了 JavaScript 代码的肆无忌惮,比如拿数字和数组做求和运算,给函数传入不符合预期的参数等等而这些显而易见的问题编码阶段不会有任何错误提示。
在大型项目中,一个类型“小改动”可能会导致很多处代码需要跟着调整,而这些需要调整的地方在“小改动”前后可能不会有任何报错提示,开发者只能靠肉眼排查,很难且容易遗漏。
我们使用
Typescript
的主要目的就是【类型安全】(type-safe),借助类型声明避免程序做错误的事情。下图是某错误处理平台收集统计的 JavaScript Top10 错误,其中 7 个TypeError,1个 ReferenceError:
而这 8 种问题,我们都能用 TypeScript 在编码早期及时应对
TypeScript 相对于 JavaScript 的优势是什么?
1. TypeScript 是添加了类型系统的 JavaScript,适用于任何规模的项目,增加了代码的可读性和可维护性
尤其是在第三方开源库中(例如组件库),类型系统尤为重要,现在很多项目都是用 TypeScript 写的,如果依赖的库没有 TypeScript 声明,在调用时就会传递大量类型为 any 的值,最终影响项目自身使用 TypeScript 应该获得的价值(强类型推导)。
因此在开发设计第三方库时,大都会使用 TypeScript 声明。一个库如果足够热门的话,你不做 TypeScript 声明也会有热心用户做一个发布出来的。
2. TypeScript 是一门静态类型、弱类型的语言,它是完全兼容 JavaScript 的,它不会修改 JavaScript 运行时的特性
类型系统按照「类型检查的时机」来分类,可以分为:
JavaScript 就是一门解释型语言,没有编译阶段,所以它是动态类型:
TypeScript 在运行前需要先编译为 JavaScript,而在编译阶段就会进行类型检查,所以 TypeScript 是静态类型,这段 TypeScript 代码在编译阶段就会报错了:
另外,得益于 TypeScript 强大的 类型推论,上面的代码并没有手动声明变量
foo
的类型,但在变量初始化时自动推论出它是一个number
类型:以下这段代码不管是在 JavaScript 中还是在 TypeScript 中都是可以正常运行的
所以,TypeScript 是完全兼容 JavaScript 的,它不会修改 JavaScript 运行时的特性,所以它们都是弱类型
3. TypeScript 增强了编辑器(IDE)的功能,提供了代码补全、接口提示、跳转到定义、代码重构等能力
TypeScript 增强了编辑器(IDE)的功能,包括代码补全、接口提示、跳转到定义、代码重构等,这在很大程度上提高了开发效率。给开发TypeScript项目、中小型项目中迁移 TypeScript提供了便捷
4. TypeScript 与标准同步发展,符合最新的 ECMAScript 标准(stage 3)
TypeScript 坚持与 ECMAScript 标准同步发展,并推进了很多 ECMAScript 语法提案,比如可选链操作符(
?.
)、空值合并操作符(??
)、Throw 表达式、正则匹配索引等5. TypeScript 可以和 JavaScript 共存,这意味着 JavaScript 项目能够渐进式的迁移到 TypeScript
在老 JavaScript 项目中,如果你想使用 TypeScript,可以使用 TypeScript 编写新文件,老的 JavaScript 文件可以继续使用
原文