我有问题如何使用相同的功能实现类数组

这是给我一个错误的东西

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>());
    }

}


看看有没有帮助

09-11 08:35