28
我遇到的情况,我有一个具有像这样一个方法的接口:打字稿 - 在类的默认参数与接口
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");
它抱怨说,参数不匹配任何覆盖。那么是否有一种方法可以为参数设置默认值并从接口继承,我不介意接口是否必须具有默认值,因为它始终是一个可选参数。
哦,我认为这是有利于在最近的版本之一的默认值删除。所以我能够在类中的接口和默认值参数中使用可选参数? – Grofit
您仍然可以在任何地方使用可选参数而不使用默认值。唯一不允许的是冗余语法'x?= 4' - 你可以使用'?'或默认值。 –
请注意,如果您调用'SomeMethod('foo','bar')','arg3'参数将是'undefined',而不是'null'。 – vegemite4me