@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
, потому что он необязательный. В теле конструктора вы можете использовать условные операторы для проверки, какой из определений конструктора был вызван, и выполнения соответствующих действий.
Кроме того, если вы используете абстрактный класс, вы можете перегружать конструкторы в абстрактных классах так же, как и в обычных классах.