私は次のようなメソッドを持つインターフェースを持っているシナリオを持っています:
interface SomeInterface
{
SomeMethod(arg1: string, arg2: string, arg3: boolean);
}
そして、そのようなクラス:
class SomeImplementation implements SomeInterface
{
public SomeMethod(arg1: string, arg2: string, arg3: boolean = true){...}
}
今、問題は、3番目のオプションがオプションであるか、デフォルト値があることをインターフェイスに伝えることができないように見えることです。インターフェイスにデフォルト値があることを伝えようとすると、エラーが発生します。
TS2174: Default arguments are not allowed in an overload parameter.
インターフェイスからデフォルトを省略し、次のように呼び出した場合:
var myObject = new SomeImplementation();
myObject.SomeMethod("foo", "bar");
パラメーターがオーバーライドと一致しないと文句を言います。だから、パラメータのデフォルト値を持ち、インターフェースから継承できる方法はありますか、常にオプションの引数になるため、インターフェースもデフォルトとして値を持たなければならない場合、私は気にしません。
?
を使用して、オプションのパラメーターを定義できます。
interface SomeInterface {
SomeMethod(arg1: string, arg2: string, arg3?: boolean);
}