smallgeek

Swing god gun, I need it low demon

TypeScript では実装したインターフェースのメソッドより少ないパラメーターでメソッドを定義できる

TypeScript 実践プログラミングより

TypeScript実践プログラミング (Programmer's SELECTION)

TypeScript実践プログラミング (Programmer's SELECTION)

クラスのメソッドでは、インターフェースで指定されているものよりも少ない数のパラメータを定義できる。それにより、そのメソッドを実行する上で必要のない引数をクラスが無視できるようになる。

とのことなので試してみた。

interface Phone {
    call(target: string);
}

class RakurakuPhone implements Phone {
    constructor(private target: string) { }
    call() {
        console.log('Calling...');
    }
}

使うときはこんな感じで、変数の型に合わせたパラメーターでのみメソッドを呼び出せる。

var rakuraku = new RakurakuPhone('xxx-xxxx-xxxx');
rakuraku.call();
// Error
// rakuraku.call('xxx-xxxx-xxxx');

var phone = <Phone>rakuraku;
phone.call('xxx-xxxx-xxxx');
// Error
// phone.call();

不要なパラメーターを引き継ぐ必要がないのは便利。インターフェースの継承には適用されないのが勿体ない。