(этот пример, написанный машинописи, но не только в машинописи случае)Расширяет общий класс и реализовать интерфейс
class IMyInterface {
doC:(any) => any;
}
class Common {
commonProperty:any;
doA() {
}
doB() {
}
}
class ClassA extends Common {}
class ClassB extends Common implements IMyInterface {
doC(test:any) {
return true;
}
}
class Factory {
myClass: Common;
doSomething() {
// Property 'doC' does not exist on type 'Common'
this.myClass.doC('test');
}
}
класса А и В вытянуты общий класс, так что в Factory класс может определить MyCLASS тип как Common.
Но классу B необходимо реализовать IMyInterface, который не содержит общий класс. Таким образом, класс Factory выдает ошибку, что метод интерфейса не существует в Common class.
Как и как лучше всего это решить?
[Изменено]
Прежде всего, @basarat большое спасибо, но я все еще интересно, немного,
Что делать, если есть еще несколько классов, которые реализует IMyInterface
class ClassC extends Common implements IMyInterface {
doC(test:any) {
return true;
}
}
class ClassD extends Common implements IMyInterface {
doC(test:any) {
return true;
}
}
class ClassE extends Common implements IMyInterface {
doC(test:any) {
return true;
}
}
В этом случае, я могу думать, я могу определить метод doC() в классе Common. Но также я хочу, чтобы ClassB, C, D и E должны реализовывать метод Doc.
пожалуйста, сообщите мне,
Пожалуйста, смотрите обновление мой ответ для 'класса C' и т.д. случае также – basarat