note

64 阅读2分钟

简介

什么是 TypeScript?

  • 添加了类型系统的 JavaScript,适用于任何规模的项目。 // 这是官网的定义
  • 静态类型,强类型的语言。
  • 完全兼容 JavaScript,不会修改 JavaScript 运行时的特性。
  • 可以编译为 JavaScript,然后运行在浏览器、Node.js 等任何能运行 JavaScript 的环境中。
  • 拥有很多编译选项,类型检查的严格程度由你决定。
  • 可以和 JavaScript 共存。
  • 增强了编辑器(IDE)的功能,提供了代码补全、接口提示、跳转到定义、代码重构等能力。
  • 拥有活跃的社区,大多数常用的第三方库都提供了类型声明。
  • 与标准社区同步发展,符合最新的 ECMAScript 标准(stage3)。

类型系统

  • 按【类型检查的时机】分类,可以分为动态类型和静态类型。

    • 动态类型是指在运行时才会进行类型检查。
    • 静态类型是指编译阶段就能确定每个变量的类型。
  • 按【是否允许隐式类型转换】分类,可以分为强类型和弱类型。

标准

一个新的语法从提案到变成正式标准,需要经历一下几个阶段:

  • Stage 0:展示阶段,仅仅提出了讨论、想法,尚未正式提案。
  • Stage 1:征求意见阶段,提供抽象的 API 描述,讨论可行性,关键算法等。
  • Stage 2:草案阶段,是用正式的规范语言精确描述其语法和语义。
  • Stage 3:候选人阶段,语法的设计工作已完成,需要浏览器、Node.js 等环境支持,搜集用户的反馈。
  • Stage 4:定案阶段,已准备好将其添加到正式的 ECMASscript 标准中。

安装 TypeScript

命令行安装

npm i -g typescript

编译 TypeScript 文件

tsc index.ts

Tips

  • TypeScript 只会在编译时对类型进行静态检查,如果发现有错,编译的时候就会报错。
  • TypeScript 编译的时候即时报错了,还是会生成编译结果,如不需要可以在配置文件中修改,配置 noEmitOnError 既可。

类型

JavaScript 的类型分为 原始数据类型(基本数据类型)和对象类型(引用类型) 原始数据类型:Boolean(布尔值)、Number(数值)、String、Null、Undefined、Symbol、BigInt。 引用类型:Object