用编程范式去理解TS逆变
协变和逆变是用处理函数的参数类型和返回值类型的两个概念。具体来说,对于函数类型的变量和函数,它们的参数类型或者返回值类型有父子类之间的关系时,会用到这两个概念。
简单理解:协变就是子类型可以赋值给父类型;逆变相反。
-
函数的参数是逆变。TS默认是双变的,需要使用
strictFunctionTypes: true严格逆变。- 函数的逆变遵循的是里式替换原则,即所有对父类的操作可以安全地转化为对子类地操作。
- 用于赋值的函数参数是父类,它可以赋值给参数是子类的变量,意味着下次调用这个函数的时候传递的是子类对象,这就遵循里式替换原则!
-
函数的返回值是协变
- 函数返回值是协变,符合常规的面向对象思想。