web-dev-qa-db-ja.com

Typescript-インターフェイスを持つクラスのデフォルトパラメータ

私は次のようなメソッドを持つインターフェースを持っているシナリオを持っています:

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");

パラメーターがオーバーライドと一致しないと文句を言います。だから、パラメータのデフォルト値を持ち、インターフェースから継承できる方法はありますか、常にオプションの引数になるため、インターフェースもデフォルトとして値を持たなければならない場合、私は気にしません。

38
Grofit

?を使用して、オプションのパラメーターを定義できます。

interface SomeInterface {
     SomeMethod(arg1: string, arg2: string, arg3?: boolean);
}
66
Ryan Cavanaugh