'XXX'不提供签名'new():XXX'的匹配

时间:2017-02-23 19:30:51

标签: typescript

我有以下类,我在for循环中收到此错误:

  

[TS]   “组件”类型的参数不能分配给“ComponentType”类型的参数。     类型“组件”不匹配签名'new():Component'

这个类看起来像这样:

class Prefab {

    public components: Component[] = [];

    public static make(object: Prefab): GameObject {
        let go = new GameObject;
        for (let comp of object.components) {
            // The error is here:
            go.addComponent(comp);
        }
        return go;
    }

}

然后我为我的组件类设置了这个接口:

interface ComponentType<T extends Component> {
    new (): T;
}

以下是addComponent的定义:

addComponent<T extends Component>(type: ComponentType<T>): T;

我可以在这做什么?

1 个答案:

答案 0 :(得分:-1)

for循环中,comp变量引用Component类型。

for (let comp of object.components) {

而您的addComponent方法需要ComponentType<T>类型

addComponent<T extends Component>(type: ComponentType<T>): T;

ComponentComponentType<T>没有导致错误的相同类型。