TypeScriptで引数がないメソッドとあるメソッドをオーバーロードする方法
3089 ワード
TypeScriptで
引数がある場合はsetter(しつつthisを返したい)
引数がない場合はgetterという事がしたくて
調べたところ引数なしの場合は
引数をoptionalにしてオーバーロードするらしいんですが
ちょっと気持ち悪いなぁ
void型の引き数にしたらいけたりして?
class Hoge {
width(v:number):this;
width(v:void):number; // 引数の型をvoidにしたらいけた
width(v:any):any {
if(typeof v === 'number') {
this._width = v;
return this;
} else {
return this._width;
}
}
}
と思ってやったらいけるにはいけたんですが
コメントにてもっと素晴らしい方法を教えていただきました。
(もっと素晴らしいというか自分のやり方はわりとクソだなと思いつつある)
width(v: number): this;
width(): number;
width(...v: [] | [number]): this | number {
// ...
}
rest parameters(...)を使って
可変長引数として引数を受け取って判定する方法
引数の数が異なる場合のオーバーロードはこの方法が好きかも
と思います。
しかし引数の数は同じだけど、型が異なる
というケースの場合はこの書き方は少し冗長かもしれないですね
できるかできないかで言えば
方法はいくつもあるとは思いますが
より良いものや最適解を求めていきたい。
Author And Source
この問題について(TypeScriptで引数がないメソッドとあるメソッドをオーバーロードする方法), 我々は、より多くの情報をここで見つけました https://qiita.com/Nekonecode/items/70dae8467512397efc34著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .