Назначьте Breeze.Entity для определенного класса TypeScript
Не стоит слишком увлекаться синтаксисом Breeze, но "createEntity" правильно возвращает тип breeze.Entity. Почему TypeScript не позволяет мне назначить этот возвращенный объект "instance", который имеет тип myClass, который реализует интерфейс breeze.Entity?
Кажется, что это должно работать, но я получаю ошибку "Тип" Entity "не присваивается типу" myClass ". Свойство" id "отсутствует в типе" Entity ".
Я полностью неправильно понимаю наследование и / или интерфейсы в TypeScript (или вообще)?
this.instance = EntityManager.createEntity("myClass", myObj); // instance is defined as type 'myType'
Если я определяю this.instance как 'any', все работает, но я теряю свой строго типизированный объект в другом месте.
Мои классы и интерфейсы...
export class myClass extends base implements Interfaces.IMyClass, breeze.Entity {
public id: number;
....
constructor() {
super();
}
}
export class base implements breeze.Entity {
constructor() { }
public entityAspect: breeze.EntityAspect;
public entityType: breeze.EntityType;
}
export interface IMyClass extends breeze.Entity {
id: number;
...
}
1 ответ
Я не уверен, были ли это другие проблемы, или это, но я заставил это работать, используя "как", описанный ниже.
this.instance = EntityManager.createEntity ("myClass", myObj) as MyClass;