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
。