昔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/ でも警告が出ることを確認しました)

型の追加では対応できない場合、どういう書き換えで乗り切ればよいか、よいアイディアがあれば教えてください。