我有以下类,我在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;
我可以在这做什么?
答案 0 :(得分:-1)
在for
循环中,comp变量引用Component
类型。
for (let comp of object.components) {
而您的addComponent
方法需要ComponentType<T>
类型
addComponent<T extends Component>(type: ComponentType<T>): T;
Component
和ComponentType<T>
没有导致错误的相同类型。