Как определить необязательные аргументы конструктора с значениями по умолчанию в Typcript
Возможно ли иметь необязательные аргументы конструктора со значением по умолчанию, например
export class Test {
constructor(private foo?: string="foo", private bar?: string="bar") {}
}
Это дает мне следующую ошибку:
Параметр не может иметь знак вопроса и инициализатор.
Я хотел бы создать такие экземпляры, как
x = new Test(); // x.foo === 'foo'
x = new Test('foo1'); // x.foo === 'foo1'
x = new Test('foo1', 'bar1');
Каков правильный тип машиностроения для этого?
Ответы
Ответ 1
Аргумент, который имеет значение по умолчанию, необязательно по определению, как указано в документах:
Параметры, инициализированные по умолчанию, которые поступают после всех необходимых параметров, рассматриваются как необязательные, а также как необязательные параметры, могут быть опущены при вызове их соответствующей функции
Это то же самое для конструкторов, как и для других функций, поэтому в вашем случае:
export class Test {
constructor(private foo: string = "foo", private bar: string = "bar") {}
}