継承先クラスでは実装されているかも知れないメソッドを基底クラス内で扱いたい
昔JavaScriptで書いた変なコードをTypeScriptに置き換えようとしています。ですが Property 'g' does not exist on type 'BaseClass'.
というエラーを回避できません。
オリジナルのコードのロジックを改変せずに、型定義や修飾子の追加で移行する方法を知りたいです。
class BaseClass {
h() {
/* ... */
}
f() {
if (this.g) {
this.g();
this.h();
}
}
}
class ExampleClassA extends BaseClass {
/* 継承してgメソッドを実装する場合 */
g() {
/* ... */
}
}
class ExampleClassB extends BaseClass {
/* 継承してもgメソッドを実装しない場合 */
}
/* BaseClassが直接呼ばれることはありません */
new ExampleClassA().f();
new ExampleClassB().f();
( https://www.typescriptlang.org/play/ でも警告が出ることを確認しました)
型の追加では対応できない場合、どういう書き換えで乗り切ればよいか、よいアイディアがあれば教えてください。