用编程范式去理解TS逆变

122 阅读1分钟

用编程范式去理解TS逆变

协变和逆变是用处理函数的参数类型和返回值类型的两个概念。具体来说,对于函数类型的变量和函数,它们的参数类型或者返回值类型有父子类之间的关系时,会用到这两个概念。

简单理解:协变就是子类型可以赋值给父类型;逆变相反。

  • 函数的参数是逆变。TS默认是双变的,需要使用strictFunctionTypes: true严格逆变。

    • 函数的逆变遵循的是里式替换原则,即所有对父类的操作可以安全地转化为对子类地操作。
    • 用于赋值的函数参数是父类,它可以赋值给参数是子类的变量,意味着下次调用这个函数的时候传递的是子类对象,这就遵循里式替换原则!
  • 函数的返回值是协变

    • 函数返回值是协变,符合常规的面向对象思想。