两种类型系统

  • 结构化类型系统Structural Type System
  • 标明类型系统Nominal Type System

TS采用的是结构化类型系统,如果运行时类型至少与编译型类型相同,则认为它们属于统一类型。

类兼容性

  1. class People{
  2. name: string
  3. age: number
  4. }
  5. class Person{
  6. name: string
  7. age: number
  8. // 编译型类型可以多
  9. sex: string
  10. }
  11. // 认为两者是同一类型
  12. const p: People = new Person()

接口兼容性

函数兼容性

需要考虑

  • 参数个数:参数少的可以赋值给多的。
  • 参数类型:相同位置的参数类型要相同或兼容。
  • 返回值类型:返回值是原始类型,则要相同;返回值是对象类型,成员多的赋值给成员少的。