yuuka_maniaの日記: Typescript 引数(シグネチャ)違いの同じメソッド名 2
日記 by
yuuka_mania
てっきりできないと思ってたが、できる模様。ただし、ちょっと特殊。しかし、これ、一般的には、オーバーロードっていうんだった?オーバロードって、継承した子で、親のメソッドを置き換えるような作法のことだと思ってたんだが。使いたい場面は結構あるので、使うが、しかしながら、これはイケてない気がするなぁ。トランスパイルで頑張れば、一般的な方法で実現できると思うのだが。
twice(num: number): number;
twice(str: string): string;
twice(arg: any): any {
if (typeof arg === 'number') {
return arg * 2;
}
if (typeof arg === 'string') {
return `${arg}${arg}`;
}
}
なお、プリミティブ型じゃない場合は、 その判定は、instanceof なんてのを使うっぽい。 ref. https://am1tanaka.hatenablog.com/entry/2013/12/11/211109
overload vs override (スコア:1)
> 継承した子で、親のメソッドを置き換えるような作法
それは overload ではなく override ではないですか
Re:overload vs override (スコア:1)
C#を使うようになってキーワード必須になったから間違えることがなくなった。