深入浅出TS | 青训营

110 阅读2分钟

TS是JS的超集,用于解决大型项目的代码复杂性 JS则是一种脚本语言,用于创建动态网页

TS是强类型,支持静态和动态类型 JS是动态弱类型语言

TS可以在编译期间发现并纠正错误 JS只能在运行时发现错误

TS不允许改变变量的数据类型 JS变量可以被赋值成不同类型

TS是生产力工具,类型安全,并具有下一代JS特性,同时有完善的工具链

推荐Awesome Typescript的开源教程与应用 Typescript Playground TS到JS在线编译

TS的基础类型有

  1. boolean, number, string
  2. undefined, null
  3. any, unknown, void
  4. never
  5. 数组类型 []
  6. 元组类型 tuple

TS的函数类型有 TS定义函数类型时需要定义输入参数类型和输出类型 输入参数: 参数支持可选参数和默认参数 输出参数: 输出可以自动推断,没有返回值时默认为void类型 函数重载: 名称相同但参数不同,可以通过重载支持多种类型

TS接口是为了定义对象类型

  • 可选属性: ?
  • 只读属性: readonly
  • 可以描述函数类型
  • 可以描述自定义类型

接口非常灵活 duck typing

TS的类和JS相似,但是增加了定义

  • 增加public,private,protected修饰符
  • 抽象类
    • 只能被继承,不能被实例化
    • 作为基类,抽象方法必须被子类实现
  • interface约束类,使用implements关键字

TS高级类型

  1. 联合类型
  2. 交叉类型
  3. 类型断言
  4. 类型别名(type VS interface)
  • 定义:给类型起别名
    1. 相同点: 都可以定义对象或函数
    2. 都允许继承
  • 差异点:
  1. interface是TS用来定义对象,type用来定义别名方便使用
  2. type可以定义基本类型,interface不行
  3. interface可以合并重复声明,type不行