Last time我發現如何強制打印腳本來查看從其他地方複製到類原型的方法。該方法是有關聲明字段:用重寫模仿多重繼承
class First {
someMethod() {
console.log('someMethod from First');
}
}
function Second() {
console.log('Second');
}
Second.prototype.doSmth = function() {
console.log('doSmth from Second');
}
class Both extends First {
constructor() {
console.log('constructor of Both');
super();
Second.call(this);
}
doSmth:() => void
}
for (let key in Second.prototype) {
Both.prototype[key] = Second.prototype[key];
}
class Final extends Both {
doIt() {
this.someMethod();
this.doSmth();
Both.prototype.doSmth(); // ok
Final.prototype.doSmth(); // ok
}
}
但現在我需要在子類中的一個重寫這樣的方法:
class OtherFinal extends Both {
doSmth() { // Here is an error
console.log('doSmth from OtherFinal');
}
}
類「這兩個」定義實例成員屬性'doSmth',但'OtherFinal'類將其定義爲實例成員函數。
該消息是絕對符合邏輯的。
是否有其他方法讓打字稿看到沒有直接實施的方法?
我知道導致同樣的問題的所有方面(鏈接導致相應的小提琴):
doSmth:() => void
,doSmth: typeof Second.prototype.doSmth;
。
據我所知,我可以聲明一個函數 doSmth() {}
,但在這種情況下,垃圾將進入編譯代碼,所以我不想這樣去。
你知道,我認爲從兩個類繼承是一個非常糟糕的主意。改爲使用組合和接口! – Louy
至於你的問題,我認爲沒有*整潔的解決方案。 – Louy