最近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なかなかおもしろいです。