TypeScript конструктор

я попытался создать класс с двумя конструкторами и выяснить, чтоМашинопись это не разрешено, но это допускает перегрузку конструктора, я попытался это сделать и получил ошибку:

Сборка: подпись перегрузки не совместима с реализацией функции.

Мой код:

interface IShoppingListItem {
    name: string;
    amount: number;
}

export class ShoppingListItem implements IShoppingListItem{
    name: string;
    amount: number;

    constructor(item: IShoppingListItem);
    constructor(name: string, amount: number) {
        this.name = name;
        this.amount = amount;
    }

    copy() {
        //return new this.constructor(this);
    }
}

У меня два вопроса, во-первых, почему я не могу перегрузить конструктор, я думаю, что я делаю что-то не так.

Но мой второй и более интерактивный вопрос: я знаю, что я конструктор, который получает необязательные значения. Могу ли я (не с кодом внутри метода!) Создать условие в моем конструкторе, которое может проверить, что одно из двух заданных значений должно существовать, в то время как в загрузке сигнатуры необязательно, например, так:

constructor(item?: IShoppingListItem, name?: string, amount?: number) { 
//make a condition that item or name and amount must exist
    this.name = name;
    this.amount = amount;
}

Благодарю.

Ответы на вопрос(2)

Ваш ответ на вопрос