49

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

interface SomeInterface
{
   SomeMethod(arg1: string, arg2: string, arg3: boolean);
}

像这样的课程:

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

现在的问题是我似乎无法告诉界面第三个选项应该是可选的或具有默认值,就好像我试图告诉界面有一个默认值一样,我得到了错误:

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

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

var myObject = new SomeImplementation();
myObject.SomeMethod("foo", "bar");

它抱怨参数不匹配任何覆盖。那么有没有办法能够为参数设置默认值并从接口继承,我不介意接口是否也必须将值设为默认值,因为它始终是可选参数。

4

1 回答 1

78

您可以使用以下命令将参数定义为可选?

interface SomeInterface {
     SomeMethod(arg1: string, arg2: string, arg3?: boolean);
}
于 2013-09-05T15:45:02.997 回答