JavaScript最大的问题
程序员编写的最常见的错误类型可以描述为类型错误:在预期不同类型的值的地方使用了某种类型的值。这可能是由于简单的拼写错误、无法理解库的 API 表面、对运行时行为的错误假设或其他错误。
使用JavaScript
编写代码最突出的问题就是类型检查问题:由于JavaScript
是弱类型语言,使得大多数使用者只能在代码运行阶段才能发现类型错误问题,这就使得错误不能被及时发现和修复,为之后的开发埋下了隐患。
JavaScript
没有表达不同代码单元之间关系的能力。结合 JavaScript
相当奇特的==运行时语义==,语言和程序复杂性之间的这种不匹配使得 JavaScript
开发成为一项难以大规模管理的任务。
TypeScript
的目标是成为 JavaScript
程序的静态类型检查器——换句话说,是一个在代码运行之前运行的工具(静态)并确保程序的类型正确(类型检查),使得我们能够在代码编写阶段就能及时发现类型错误问题。
什么是TypeScript
TypeScript
是一种由微软开发的自由和开源的编程语言。它是 JavaScript
的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。
TypeScript
是一种非常受欢迎的 JavaScript
语言扩展。它在现有的 JavaScript
语法之上加入了一层类型层,而这一层即使被删除,也丝毫不会影响运行时的原有表现。许多人认为 TypeScript
"只是一个编译器",但更好的理解其实是把 TypeScript
看作两个独立的系统:编译器(即处理语法的部分)和语言工具(即处理与编辑器集成的部分)。
JS , ES , TS 的关系
- 1995年:JavaScript诞生
当时的网景公司正凭借其
Navigator
浏览器成为Web
时代开启时最著名的第一代互联网公司。由于网景公司希望能在静态
HTML
页面上添加一些动态效果,于是 Brendan Eich 在两周之内设计出了
JavaScript
语言。
之所以起名叫`JavaScript`,是原因是当时`Java`语言非常红火,想要蹭一波热度而已,实际上`JavaScript`除了语法上有点像`Java`,其他部分基本上没啥关系。
- 1997年:ECMAScript诞生
因为网景开发了
JavaScript
,一年后微软又模仿JavaScript
开发了JScript
,为了让JavaScript
成为全球标准,几个公司联合ECMA
(European Computer Manufacturers Association)(欧洲计算机制造商协会)组织制定了JavaScript
语言的标准,被称为ECMAScript
标准。 - 2015年:TypeScript诞生
TypeScript
是JavaScript
的超集(最终会被编译成JavaScript
代码),即包含JavaScript
的所有元素,能运行JavaScript
的代码,并扩展了JavaScript
的语法。相比于JavaScript
,它还增加了静态类型、类、模块、接口和类型注解方面的功能,更易于大项目的开发。TypeScript
提供最新的和不断发展的JavaScript
特性,包括那些来自 2015 年的ECMAScript
和未来的提案中的特性,比如异步功能和Decorators
,以帮助建立健壮的组件。
一句话总结三者关系:ECMAScript
是标准语言,JavaScript
是ECMAScript
的实现,TypeScript
是JavaScript
的超集。
为什么使用TypeScript
TypeScript
扩展了JavaScript
,提供强大的类型检查和语法提示功能,结合诸如VS code
这类编译器,能够极大的提高开发效率,降低项目后期的维护成本:
配置TypeScript环境
在学习TypeScript
之前我们需要先全局安装tsc
TypeScript
编译器。
npm i -g typescript
自己创建一个项目(文件夹),在项目根目录终端运行:
tsc -init
此时项目根目录下会生成一个配置文件 tsconfig.json
,这里给出我使用的配置:
{
"compilerOptions": {
/* TS编译成JS的版本*/
"target": "es6",
/* 入口文件:指定源文件中的根文件夹。 */
"rootDir": "./src",
/* 编译出口文件:指定输出文件夹。 */
"outDir": "./dist",
/* 严格模式 */
"strict": true,
}
}
项目根目录下创建src
文件夹,在这个文件内创建并编写你的ts
文件
在项目根目录终端输入tsc --watch
就会开始持续监听src
目录下的所有ts
文件,文件更改时会自动将其编译成js
文件到dist
目录下
如果想要自己手动编译某一特定ts
文件,可以在ts
文件所在目录下运行tsc xxx.ts
,这时编译后的js
文件会放在与该ts
文件同级的地方
注意:我们使用TypeScript
的目的就是检验代码并纠错,尽量使自己的代码变得足够规范,所以建议应始终使用"strict": true
开始学习TypeScript
想要深入去学习TypeScript
的同学可以去博主的TypeScript从入门到精通专栏,里面的每一篇文章都是博主呕心沥血,精益求精写出来的优质好文,并且可能会是你看过的最全最细致的TypeScript
教程
话不多说,赶快去关注、订阅、收藏、点赞,开始学习吧!