ポリモーフィックthis
クラスメソッド内でthisを返り値の型として使う機能
これにより、そのメソッドが実際に呼び出されたインスタンスの型(サブクラスも含む)を返すようになる
メリット
メソッドチェーンを継承関係のあるクラス間で使う際に、型補完・安全性が向上する
code:ts
class BasicCalculator {
protected value: number = 0;
add(operand: number) {
this.value += operand;
return this; // ここがポリモーフィック this 型
}
}
class ScientificCalculator extends BasicCalculator {
sin() {
this.value = Math.sin(this.value);
return this; // ここもポリモーフィック this 型
}
}
const calc = new ScientificCalculator();
// add() は BasicCalculator で定義されているが、
// ScientificCalculator のインスタンスで呼ぶと、
// this は ScientificCalculator 型として扱われる
const result = calc.add(5).sin(); // 正しく sin() を呼び出せる
// result は ScientificCalculator 型になる
console.log(result.value);
#TypeScript