我有问题如何实现具有相同功能的类数组
这是得到的错误
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
答案 0 :(得分:1)
声明特定类型的变量时,只存储该变量中具有该特定类型的那些值。如果声明泛型类型的变量,则只能存储泛型类型的值(非特定类型)。
在您的特定情况下,您声明this.arrr作为泛型类型,并且您存储在其中的值(新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>());
}
}
看看是否有帮助