ソフトウェアエンジニアの日常の雑記

日々思ったことをまとめます

Typescriptのメソッドのオーバーロード

最近Typescriptの勉強してるんですけど、Typescriptのメソッドのオーバーロードが面白いなとおもったので、メモ。

書き方は、any型のメソッドの中で分岐させる感じですね。 any型に渡せるパラメータの型を限定させたければ、抽象メソッドっぽく書く。 引数がなしも実装したい場合は、any型の変数の横に"?"をつけてあげます。 typeofで分岐させなきゃいけないちょっとイケてない気がしますが。

class A {
    sampleA(x: string);
    sampleA(x: number);
    sampleA(x: boolean);
    sampleA(x?: any){
        if(typeof(x) == 'string'){
            console.log('string:' + x);
            return;
        }

        if(typeof(x) == 'number'){
            console.log('number:' + x);
            return;
        }

        if(typeof(x) == 'boolean'){
            console.log('boolean:' + x);
            return;
        }
    }
}

var a = new A();
a.sampleA("string");
a.sampleA(123);
a.sampleA(true);

出力結果はこちら

string:string
number:123
boolean:true

Typescriptなかなかおもしろいです。