+
80
-

js中协变和逆变有啥不同?

js中协变和逆变有啥不同?


网友回复

+
0
-

协变和逆变是typescript的概念,不是js中的

协变(Covariance):

- 对于一个协变的类型参数 `T`,在子类型中,可以使用比原始类型更具体的类型。

- 在 TypeScript 中,协变通常出现在返回值类型上,例如在数组类型中。

class Animal {}
class Dog extends Animal {}

let animals: Animal[] = [new Dog(), new Dog()];
逆变(Contravariance):

- 对于一个逆变的类型参数 `T`,在子类型中,可以使用比原始类型更泛化的类型。

- 在 TypeScript 中,逆变通常用于函数参数类型,使得函数可以接受更泛化的输入。

class Animal {}
class Dog extends Animal {}

function handleAnimal(animal: Animal): void {
// some code to handle the animal
}

// Contravariant usage
let dog: Dog = new Dog();
handleAnimal(dog);

我知道答案,我要回答