gpt4 book ai didi

javascript - 具有不同通用签名的继承

转载 作者:行者123 更新时间:2023-12-03 06:37:14 24 4
gpt4 key购买 nike

我遇到了如何实现具有相同功能的类数组的问题

这是给我一个错误的得到

interface I<T> {

}

class A<T> implements I<T> {

constructor () {

}
}

class B implements I<number> {
constructor () {

}
}

class C<T> implements I<T> {


private arrr: I<T> [] = [];

constructor () {
this.arrr.push(new A<T>());
this.arrr.push(new B());
}

}

它给了我错误 Type is not assignable to type I<T> 上线* this.arrr.push(new B()); *

我该如何解决它?我正在使用 Typescript 1.8

最佳答案

当您声明特定类型的变量时,您仅在该变量中存储属于该特定类型的值。如果声明泛型类型的变量,则只能存储泛型类型的值(而不是特定类型)。

在您的具体情况下,您将 this.arrr 声明为通用类型,并且您存储在其中的值( new B() )之一是特定类型。由于此特定类型值,它会引发错误。

示例代码

interface I<T> {

}

class A<T> implements I<T> {

constructor () {

}
}

class B<T> implements I<T> {
constructor () {

}
}

class C<T> implements I<T> {


private arrr: I<T> [] = [];

constructor () {
this.arrr.push(new A<T>());
this.arrr.push(new B<T>());
}

}

看看是否有帮助

关于javascript - 具有不同通用签名的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38141397/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com