TypeScript 特点

  • 添加了类型系统的 JavaScript
  • 适合开发大型系统(更高的可维护性,以及更少的 bug)。中小型项目中需要写额外的代码,降低开发效率
  • 静态语言、弱类型
  • 结构类型(鸭子类型):如果两个对象具有相同的结构,则认为它们是相同类型的
  • 同步 ES 标准的发展

静态语言和动态语言

类型系统按照「类型检查的时机」来分类,可以分为动态类型和静态类型

  • 动态类型是指在运行时才会进行类型检查,这种语言的类型错误往往会导致运行时错误。JavaScript 是一门解释型语言,没有编译阶段,所以它是动态类型
  • 静态类型是指编译阶段就能确定每个变量的类型,这种语言的类型错误往往会导致语法错误。TypeScript 在运行前需要先编译为 JavaScript,而在编译阶段就会进行类型检查,所以 TypeScript 是静态类型

强类型和弱类型

类型系统按照「是否允许隐式类型转换」来分类,可以分为强类型和弱类型

  • JS 和 TS 都是弱类型