TypeScript是一种由微软开发的自由和开源的编程语言。它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。安德斯·海尔斯伯格,C#的首席架构师,已工作于TypeScript的开发。2012年十月份,微软发布了首个公开版本的TypeScript,2013年6月19日,在经历了一个预览版之后微软正式发布了正式版TypeScript0.9,向未来的TypeScript1.0版迈进了很大一步。ThinkJS 3.2 开始支持了创建 TypeScript 类型的项目,并且开发时会自动编译、自动更新,无需手工编译等复杂的操作。 Typescript 提供什么类型能力? 在开发过程中,配合IDE,TS 能实时检查类型的合法性,还能基于类型给出更精准的自动补全等特征提升码字效率。 在编译过程中,TS 仍然能做类型检查,再把 TS 代码编译成 JS 代码。 2 类型声明空间 其实 TS 在变量声明的过程中,构建了另一个平行的类型声明空间。理解两个空间的隔离和联系,才能在各种杂乱的声明中保持清醒。 理解类型声明空间和变量声明空间 类型声明空间和变量声明空间是两个世界 类型在其空间里可以互相引用赋值,但不能当变量用 变量在其空间里可以互相引用赋值,但不能当类型用 两个空间的声明甚至可以同名 但两者有交流的方式: 在变量声明空间中,可以通过一些语法给变量注解类型,比如 const 变量: 类型 在类型声明空间中,可以通过一些语法捕获变量的类型,比如 type 类型 = typeof 变量 在 TS 两个空间,这么多声明语法中: 有些声明方式只声明变量,比如const C = 123; 有些声明方式只声明类型,从声明那一刻起就只属于类型空间,比如:interface A {}、type A = {} 有些声明方式会同时声明类型和变量,比如:class A 有些声明方式在声明类型的同时,还创建了变量空间的数据结构,比如enum Typescript 提供了类型能力,提高开发效率,提升代码可维护性和稳定性 Typescript 开辟了和「变量声明空间」平行的「类型声明空间」,二者相互独立 两个空间的内容,可以通过注解等行为互相关联 所谓单文件编译也是剔除类型声明空间,保留变量声明空间的过程 declare 是一种专门为缺失类型的变量声明空间内容补充类型声明空间内容的方式