TypeScript-Konstruktor

Ich habe versucht, eine Klasse mit zwei Konstruktoren zu erstellen und herauszufinden, dassTyposkrip erlauben das nicht, aber es erlaubt das Überladen des Konstruktors, nun, ich habe es versucht und bekomme einen Fehler:

Build: Überladungssignatur ist nicht mit der Funktionsimplementierung kompatibel.

Mein Code:

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);
    }
}

Ich habe zwei Fragen, die erste, warum kann ich den Konstruktor nicht überladen, ich glaube, ich mache etwas falsch.

Aber meine zweite Frage und mehr Interaktion ist, ich weiß, ich Konstruktor, der optionale Werte erhalten. Kann ich (nicht mit dem Code in der Methode!) Eine Bedingung in meinem Konstruktor erstellen, die überprüft, ob einer der beiden angegebenen Werte vorhanden sein muss, während der Start der Signatur optional ist, wie folgt:

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

Vielen Dank

Antworten auf die Frage(4)

Ihre Antwort auf die Frage