981377660LMT / ts

ts学习
6 stars 1 forks source link

"函数是逆变的" 含义 #471

Open 981377660LMT opened 6 months ago

981377660LMT commented 6 months ago

在类型系统中,"函数是逆变的"是指,如果有类型 A 和类型 B,且 A 是 B 的子类型,那么对于函数类型,函数的参数类型就是逆变的,也就是说,函数参数的类型 B 到 A 的变化方向与 A 到 B 的子类型关系是相反的。

举个例子,假设我们有两个类型 Animal 和 Dog,Dog 是 Animal 的子类型。那么对于函数类型 f: (Animal) -> voidg: (Dog) -> void,我们可以说 fg 的子类型,因为 f 可以接受任何 g 可以接受的参数。

这就是所谓的逆变,函数参数的类型关系与原始类型的关系是相反的。这是因为如果一个函数可以接受更广泛的参数类型,那么它就可以被认为是更 "通用" 的,因此应该被认为是其他函数的子类型。