#typescript
#typescript
Вопрос:
Рассмотрим следующий класс C #:
class Foo
{
public Foo(int id, string name)
{
}
public Foo(int id) : this(id, "")
{
}
}
Тот же подход в TypeScript не совсем работает:
class Foo {
constructor(id: number, name: string) {
}
// fails here
constructor(id: number) this(id, "") {
}
}
Есть ли практический способ добиться цепочки конструкторов?
Идея состоит в том, чтобы иметь возможность вызывать new Foo(1, "frank")
и new Foo(1)
.
Ответ №1:
JavaScript и, следовательно, TypeScript не поддерживают перегрузку конструктора или метода, поэтому в вашем классе не может быть более одной реализации конструктора.
Одним из способов достижения желаемого поведения было бы использование параметров по умолчанию:
class Foo {
constructor(id: number, name: string = '') {
}
}
Соответствующая документация (но я настоятельно рекомендую вам прочитать ее всю)