export default interface IComponent {
name: string;
};
export interface IComponentsList {
[key: string]: IComponent;
}
export interface IComponents {
health: IHealth[];
}
class Entity implements IEntity {
readonly id: string = '';
components: IComponentsList = {};
}
class Main {
components: IComponents = {
health: [],
};
entities: Map<string, IEntity> = new Map();
addEntity(entity: IEntity) {
for ( let componentKey in entity.components ) {
if (entity.components.hasOwnProperty(componentKey)) {
this.components[componentKey].push(entity.components[componentKey]);
}
}
}
}
Есть сущности, их может быть много и разных. Сущности - это объект-контейнер, который содержит поле с id и объект с компонентами.
Также, существует класс Main, который должен собрать все компоненты у всех сущностей.
Проблема заключется в том, что при попытке это осуществить появляется ошибка: "
Element implicitly has an 'any' type because type 'IComponents' has no index signature." Из ошибки следует, что "
IComponents" необходимо переделать на подобии "
IComponentsList", но мне нужно оставить строгое описание этого интерфейса.