【发布时间】:2016-02-03 20:09:52
【问题描述】:
以下代码与 component.constructor 有错误(实体构造函数以及 addComponent 和 removeComponent 方法)。
错误:'Function' 类型的参数不可分配给'typeof Component' 类型的参数。
如何声明 Map 其中 key = Class 构造函数,value = Class 实例?
declare class Component {
constructor(...argArray: any[]);
}
// declare type MapOfComponents = Map<{new(): Component}, Component>
declare type MapOfComponents = Map<typeof Component, Component>
export default class Entity {
static id = 1;
id: number;
components: MapOfComponents = new Map();
constructor(components?: Array<Object>) {
this.id = Entity.id++;
components.forEach((component) => {
this.components.set(component.constructor, component);
});
}
addComponent(component: Component): this {
this.components.set(component.constructor, component);
return this;
}
removeComponent(component: Component): this {
this.components.delete(component.constructor);
return this;
}
hasComponent(ctr: typeof Component): boolean {
return !!this.components.get(ctr);
}
getComponent(ctr: typeof Component): Object {
return this.components.get(ctr);
}
}
【问题讨论】:
标签: dictionary constructor typescript