TypeScript 简介
简介
TS是微软开发的一种基于JS语言的编程语言。它的目的不是创造一种全新的语言,而是为了增强JS功能。
TS可以看成是JS的超集,它继承了JS的全部语法,因此所有的JS代码都是合法的TS代码。
TS为JS添加了类型系统。JS属于动态类型语言,没有任何使用限制,运算符可以接受任何类型的值,不具有很强的约束性。TS引入了一个更强大、更严格的类型系统,属于静态类型系统。
TS代码并不被JS的运行环境(浏览器和Node.js)所认识,因此TS代码想要运行,就必须先转成JS代码,而这个转换的过程就叫做“编译”compile。TS在编译时,会将类型相关的代码全部删除,只留下能运行的JS代码。
TS的类型检查只是编译时的类型检查,而不是运行时的类型检查。因为TS代码必须编译成JS代码才能运行,所以代码运行时不会再进行类型检查。
学习
TS一定要分清值与类型。类型是针对(服务或约束)于值的,只有分清哪些是值,哪些是类型,才能读懂TS代码,也才能更好的为值设置类型。每个值在TS中都有对应的类型,开发者设置或由TS推断。
TS只涉及类型,不涉及值,凡是和值相关的处理都由JS处理。TS项目运行前需要先编译,编译的过程其实就是把类型代码去掉,只保留能运行的值代码。
类型声明与推断
TS最明显的特征,就是js变量加上了类型声明。但类型声明不是必须的,如果没有,TS会自己推断类型。
// 类型声明
let foo: number = 123
// 类型推断
let bar = 'hello' // 变量 bar 的类型推断为 string
bar = 456 // 赋值为其它类型时报错
TS类型声明是可选的,因此所有的JS代码都是合法的TS代码。
编译
TS官方没有做运行环境,只提供了编译器,叫做tsc。TS文件使用.ts后缀名,tsc的作用就是将.ts脚本编译成.js脚本。
安装
tsc是一个npm模块,可以全局安装,也可以在项目中单独安装。
// 全局安装
npm install typescript -g
初始化tsconfig.json
tsc --init
使用tsc命令进行编译。
// app.ts
let foo: number = 123
let bar: string = 'hello'
使用以下命令编译app.ts
tsc app.ts
得到一个app.js脚本
// app.js
var foo = 0;
var bar = 'hello';