Подтвердить что ты не робот

Typescript - Параметры по умолчанию для класса с интерфейсом

У меня есть сценарий, где у меня есть интерфейс, который имеет такой способ:

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");

Он жалуется, что параметры не соответствуют переопределению. Так что есть способ иметь значения по умолчанию для параметров и наследовать от интерфейса, я не против, если интерфейс должен иметь значение по умолчанию, так как он всегда будет необязательным аргументом.

4b9b3361

Ответ 1

Вы можете определить необязательный параметр с ?:

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