我有问题如何使用相同的功能实现类数组
这是给我一个错误的东西
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>());
}
}
看看有没有帮助