Construtor TypeScript

Eu tentei criar uma classe com dois construtores e descobri queTypeScript não estão permitindo isso, mas permitem sobrecarga do construtor, bem, eu tentei e recebi um erro:

Compilação: a assinatura de sobrecarga não é compatível com a implementação da função.

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

Eu tenho duas perguntas, a primeira, por que não consigo sobrecarregar o construtor, acho que estou fazendo algo errado.

Mas minha segunda pergunta, e mais interativa é, eu sei que construtor que obtém valores opcionais. Posso, (não com o código dentro do método!), Criar uma condição no meu construtor que possa verificar se um dos dois valores fornecidos deve existir, enquanto na inicialização da assinatura são opcionais, assim:

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

Obrigado.

questionAnswers(2)

yourAnswerToTheQuestion