Typed JavaScript at Any Scale.
添加了类型系统的 JavaScript,适用于任何规模的项目。
类型是typescript的核心,JavaScript的变量是灵活的,初始化时可以是字符串类型,稍后可以赋值为数字,另一方面从类型系统按照「类型检查的时机」来分类,可以分为动态类型和静态类型。这就造成了JavaScript有些错误只能在执行时才会报错,(另JavaScript有两个状态,一是预编译阶段,此时对于var,function可以做变量提升,function是一等公民,二是执行阶段。)TypeScript是静态类型,在运行前需要先编译为 JavaScript,而在编译阶段就会进行类型检查。
let foo = 1;
foo.split(' ');
// JavaScript
// Uncaught TypeError: foo.split is not a function
// 运行时会报错(foo.split 不是一个函数),造成线上 bug
// TypeScript
// Property 'split' does not exist on type 'number'.
// 编译时会报错(数字没有 split 方法),无法通过编译
类型系统按照「是否允许隐式类型转换」来分类,可以分为强类型和弱类型。
TypeScript和JavaScript 一样是弱类型,它们都可以在运行时进行隐式的类型转换。
安装TypeScript
全局环境下安装 TypeScript :
npm install -g typescript
编译一个 TypeScript 文件很简单:
tsc hello.ts