Typescript - 带接口的类的默认参数

Gro*_*fit 40 arguments interface default-value typescript

我有一个场景,我有一个接口,有一个像这样的方法:

interface SomeInterface
{
   SomeMethod(arg1: string, arg2: string, arg3: boolean);
}
Run Code Online (Sandbox Code Playgroud)

像这样的一个类:

class SomeImplementation implements SomeInterface
{
   public SomeMethod(arg1: string, arg2: string, arg3: boolean = true){...}
}
Run Code Online (Sandbox Code Playgroud)

现在问题是我似乎无法告诉接口第3个选项应该是可选的还是有一个默认值,就像我试图告诉接口有一个默认值我得到错误:

TS2174: Default arguments are not allowed in an overload parameter.

如果我从界面中省略默认值并像这样调用它:

var myObject = new SomeImplementation();
myObject.SomeMethod("foo", "bar");
Run Code Online (Sandbox Code Playgroud)

它抱怨参数与任何覆盖都不匹配.那么是否有一种方法可以为参数提供默认值并从接口继承,我不介意接口是否必须将值作为默认值,因为它始终是一个可选参数.

Rya*_*ugh 68

您可以将参数定义为可选参数?:

interface SomeInterface {
     SomeMethod(arg1: string, arg2: string, arg3?: boolean);
}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,如果你调用`SomeMethod('foo','bar')```arg3`参数将是`undefined`,而不是`null`. (7认同)