TypeScript 和 JavaScript 的区别是什么?
Typescript 是 JavaScript 的超集,可以被编译成 JavaScript 代码。用 JavaScript 编写的合法代码,在 TypeScript 中依然有效。Typescript 是纯面向对象的编程语言,包含类和接口的概念。程序员可以用它来编写面向对象的服务端或客户端程序,并将它们编译成 JavaScript 代码。
TypeScript和 JavaScript的关系,图源:GeeksforGeeks
TypeScript 引入了很多面向对象程序设计的特征,包括:
- interfaces 接口
- classes 类
- enumerated types 枚举类型
- generics 泛型
- modules 模块
主要不同点如下:
- TS 是一种面向对象编程语言,而 JS 是一种脚本语言(尽管 JS 是基于对象的)。
- TS 支持可选参数, JS 则不支持该特性。
- TS 支持静态类型,JS 不支持。
- TS 支持接口,JS 不支持接口。
2
为什么要用 TypeScript ?
- TS 在开发时就能给出编译错误, 而 JS 错误则需要在运行时才能暴露。
- 作为强类型语言,你可以明确知道数据的类型。代码可读性极强,几乎每个人都能理解。
- TS 非常流行,被很多业界大佬使用。像 Asana、Circle CI 和 Slack 这些公司都在用 TS。
3
为什么不该用 TypeScript ?
- TS 需要编译。TS 得通过编译才能变成 JS 代码。
- 随着时间的推移,类型可能变得非常复杂。当项目不断变大时这种情况十分常见。
- 尽管 TS 是类型安全的,在有些情况下编译器也有检查不出任何错误的情况。当我们修改编译后的 JS 代码时,错误就不可检测了。不过随着编译器不断改进,这种情况会越来越少。
4
摘要
JavaScript | TypeScript | |
语言 | 脚本语言 | 面向对象编程语言 |
学习难度 | 灵活易学 | 需要有脚本编程经验 |
类型 | 轻量级解释编程语言 | 强类型的面向对象编程语言 |
客户端/服务端 | 客户端服务端都有 | 侧重客户端 |
拓展名 | .js | .ts 或 .tsx |
耗时 | 更快 | 编译代码需要些时间 |
数据绑定 | 没有类型和接口的概念 | 使用类型和接口表示数据 |
注解 | 不需要注解 | 使用注解才能最大限度发挥 TypeScript的特性 |
语法 | 所有的语句都写在脚本标签内。浏览器将脚本标签内的文本识别为脚本 | 一个 TypeScript 程序由模块、方法、变量、语句、表达式和注释构成。 |
静态类型 | JS 中没有静态类型的概念 | 支持静态类型 |
模块支持 | 不支持模块 | 支持模块 |
接口 | 没有接口 | 支持接口 |
可选参数方法 | 不支持 | 支持 |
原型 | 没有这种特性 | 支持原型特性 |
开发者社区 | JS 使用范围很广,被编程社区广泛接受和使用 | TS 比较新,编程社区相对较小 |
参考选择 | 小型项目 | TS 是一种面向对象语言,代码更简洁,可读性和复用性强。因此 TS 更适合大型项目。 |