Как использовать Union Type в качестве Contraint в параметре Generai c в TypeScript - PullRequest
1 голос
/ 01 мая 2020

Кажется невозможным иметь обобщенный класс c, который ограничен типом объединения. В основном это:

class Shoe {
    constructor(public size: number){}
}

class Dress {
    constructor(public style: string){}
}

class Box <T extends Shoe | Dress > {
}

Тогда это:

// because move can move multiple boxes of Box of shoes or Box of dress
class Move<B extends Box<Shoe>[] | Box<Dress>[]> {
    private stuff: B;
    constructor(public toMove: Box<Shoe>[] | Box<Dress>[]) {
        this.stuff = toMove // this does not compile
    }

}

Или как этого достичь? У меня есть ссылка на игровую площадку , демонстрирующая ситуацию

1 Ответ

0 голосов
/ 01 мая 2020

Полагаю, и опять-таки это предположение о вашем истинном намерении, этого должно быть достаточно:

class Shoe {
    constructor(public size: number){}
}

class Dress {
    constructor(public style: string){}
}

class Box <T extends Shoe | Dress > {
}


// because move can move multiple boxes of Box of shoes or Box of dress
class Move<B extends Box<Shoe>[] | Box<Dress>[]> {
    private stuff: B;
    constructor(public toMove: B) {
        this.stuff = toMove;
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...