Как определить необязательные аргументы конструктора с значениями по умолчанию в 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") {}
}