以前ES6
合集已经更新完毕,趁热打铁今天来更新一下TypeScript
,虽然已经有不少的文档和pdf
了,可是本身总结的就是本身的。前端
TypeScript优缺点node
起步typescript
设置错误消息显示为中文npm
咱们以前已经讨论过了JavaScript
自身类型系统的问题,若是对强弱类型以及强类型的好处有不太懂的,回顾看 JavaScript类型系统 , 也介绍了Vue2.0
源码中使用过的JavaScript
类型检查器Flow
,回顾看 Flow(一)—— JavaScript静态类型检查器,在Vue3.0
的源码中已经使用了TypeScript
进行类型检查,不少的类库也使用了TypeScript
,因此接下来简单的了解一下它。编程
TypeScript
是一个基于JavaScript
之上的编程语言,是JavaScript
的超集(superset
)。和Flow
同样,也是旨在解决JavaScript
类型系统的问题。下图咱们能够清楚的看出:JavaScript
、ES6
与TypeScript
的关系json
TypeScript
是静态类型的语言,在开发的时候使用TypeScript
,可是浏览器环境是不支持TypeScript
运行的,必须在生产环境进行编译成JavaScript
才支持,因此须要提早进行编译。同时,TypeScript
并不是强类型语言,由于须要兼容JavaScript
的隐式类型转换,它只是提早了类型检查的时机,并无让类型系统自己变得更严格。segmentfault
JavaScript
类型系统不足,在开发阶段就进行类型检查,能够大大提升代码的可靠程度。TypeScript
,一开始使用JavaScript
也是支持的,能够学一个特性用一个特性。TypeScript
相比较Flow
的类型检查,功能更增强大,生态也更加健全、完善。Angular
,Vue3.0
都已经开始使用了,TypeScript
已经成为前端领域的第二语言。TypeScript
会增长一些成本,还须要进行编译处理# yarn yarn add typescript --dev # npm npm install -g typescript
安装完成后,在node-Modules/bin
目录下有tsc
的文件,咱们可使用tsc
去将ts
文件转化成js
文件bash
在src
文件夹中添加一个后缀是.ts
的文件编程语言
// 随便写写,先按照js原生写,使用ES6新特性 const hello = (name: string) => { console.log(name) } hello('TypeScript')
# yarn yarn tsc hello-TypeScript.ts # npm tsc .\src\hello-TypeScript.ts
会在同名目录下添加一个编译后的js
文件
// 已经所有转换成es3语法(默认是es3) var hello = function (name) { console.log(name); }; hello('TypeScript');
编译项目的时候,能够生成一个配置文件tsconfig.json
# yarn yarn tsc --init # npm tsc --init
里面属性是typescript
编译器配置的一些选项,通常咱们须要什么改什么便可,下面是一些经常使用的配置及其含义 TypeScript(二) —— 配置文件注解
有了配置文件以后,咱们使用tsc
命令编译整个项目的时候,配置文件才会生效,若是是单个文件,则不会起做用。
# yarn yarn tsc # npm tsc
能够看到dist
目录下有对应的js
文件和js.map
文件
标准库是内置文件对应的声明,配置文件中默认的版本是es3
,因此类型声明相似Symbol
、Promise
会报错,在某种状况下Array
、console
也可能会报错,这个时候要让程序认识那些个类型,在VSCode
中,类型右键跳转定义能够看到lib
文件夹里面有不少内置对象的定义,这就是TypeScript
标准库,以Symbol
为例:
例如:Symbol
,是ES6
的语法才支持的,这个时候有两种解决方案
target
改成es2015
target
,将lib
选项改成["ES2015"]
单独设置这个,console
的定义会报错,默认引用的DOM
类库被覆盖,须要加上"DOM"
,这里的DOM
是包含了DOM+BOM
若是下次有遇到相似的错误,能够找到其引用的标准库,而后在配置文件中引用。
开发小技巧,可让TypeScript
显示错误消息为中文。
设置 -> 输入typescript locale
-> TypeScript:Locale
-> zh-CN
# yarn yarn tsc --locale zh-CN # npm tsc --locale zh-CN # 那反设置成英文模式 tsc --locale en
若是在项目中执行ts
文件,那么不一样文件中的相同变量是会报错的,为了不这种问题,要进行做用域的处理
// 解决方法一:每一个文件使用当即执行函数包裹 (function () { const a = 123 })() // 解决方法二:使用export导出 const a = 123 export {}