У меня есть сценарий, где у меня есть интерфейс, который имеет метод, как так:Машинопись - по умолчанию параметры на класс с интерфейсом
interface SomeInterface
{
SomeMethod(arg1: string, arg2: string, arg3: boolean);
}
и класс вроде так:
class SomeImplementation implements SomeInterface
{
public SomeMethod(arg1: string, arg2: string, arg3: boolean = true){...}
}
Теперь проблема я не могу сказать интерфейс, что 3-й вариант должен быть факультативным или иметь значение по умолчанию, как если бы я пытался сказать, что интерфейс имеет значение по умолчанию, я получаю ошибку:
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