Constructor TypeScript

Traté de crear una clase con dos constructores y descubrí queMecanografiado no lo permiten, pero permite la sobrecarga del constructor, bueno, lo intenté y recibí un error:

Compilación: la firma de sobrecarga no es compatible con la implementación de la función.

Mi código:

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

Tengo dos preguntas, la primera, ¿por qué no puedo sobrecargar el constructor? Creo que estoy haciendo algo mal.

Pero mi segunda pregunta, y más interactuando es, sé que soy un constructor que obtiene valores opcionales. ¿Puedo, (no con el código dentro del método!), Crear una condición en mi constructor que pueda verificar que uno de los dos valores dados tiene que existir, mientras que en el arranque de la firma son opcionales, así:

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

Gracias.

Respuestas a la pregunta(2)

Su respuesta a la pregunta