Interface Typescript-具有接口的类上的默认参数

Interface Typescript-具有接口的类上的默认参数,interface,arguments,typescript,default-value,Interface,Arguments,Typescript,Default Value,我有一个场景,其中我有一个接口,其方法如下: interface SomeInterface { SomeMethod(arg1: string, arg2: string, arg3: boolean); } 像这样的课程: class SomeImplementation implements SomeInterface { public SomeMethod(arg1: string, arg2: string, arg3: boolean = true){...} } 现

我有一个场景,其中我有一个接口,其方法如下:

interface SomeInterface
{
   SomeMethod(arg1: string, arg2: string, arg3: boolean);
}
像这样的课程:

class SomeImplementation implements SomeInterface
{
   public SomeMethod(arg1: string, arg2: string, arg3: boolean = true){...}
}
现在的问题是,我似乎无法告诉接口第三个选项应该是可选的或有一个默认值,好像我试图告诉接口有一个默认值,我得到了错误:

TS2174:重载参数中不允许使用默认参数。

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

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

它抱怨参数与任何覆盖不匹配。因此,有没有一种方法可以为参数设置默认值并从接口继承,我不介意接口是否也必须将该值设置为默认值,因为它总是一个可选参数。

您可以使用
将参数定义为可选参数:

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

哦,我认为在最近的一个版本中,这是为了默认值而删除的。所以我可以在接口中使用可选参数,在类中使用默认值参数?您仍然可以在任何地方使用没有默认值的可选参数。唯一不允许的是冗余语法
x?=4
——您可以使用
或默认值。请注意,如果调用
somethod('foo','bar')
arg3
参数将是
未定义的
,而不是
null
。此外,如果您有可选参数,以下所有参数也必须是可选的。因此不允许使用
arg4:boolean