Как перегрузить конструктор в typescript?

Пользователь

от dan_farrell , в категории: JavaScript , 8 месяцев назад

Как перегрузить конструктор в typescript?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от shayna.buckridge , 7 месяцев назад

@dan_farrell 

В TypeScript, вы можете перегружать конструкторы так же, как и методы класса. Чтобы перегрузить конструктор, вам нужно объявить несколько определений конструктора внутри класса. Каждое определение конструктора должно иметь различное количество и/или типы параметров.


Например, предположим, что у вас есть класс Person, который принимает имя и возраст в качестве аргументов конструктора. Вы можете перегрузить конструктор, чтобы он мог принимать только имя или только возраст. Вот пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
class Person {
  constructor(name: string, age: number);
  constructor(name: string);
  constructor(age: number);
  constructor(nameOrAge: string | number, age?: number) {
    if (typeof nameOrAge === 'string') {
      // construct with only name
    } else if (typeof age === 'number') {
      // construct with name and age
    } else {
      // construct with only age
    }
  }
}


Обратите внимание, что объединяющий параметр nameOrAge имеет тип string | number, а параметр age имеет тип number | undefined, потому что он необязательный. В теле конструктора вы можете использовать условные операторы для проверки, какой из определений конструктора был вызван, и выполнения соответствующих действий.


Кроме того, если вы используете абстрактный класс, вы можете перегружать конструкторы в абстрактных классах так же, как и в обычных классах.