Интерфейс Typescript Generics: Разрешить generi c T, только если T имеет объединенный тип 'A | B» - PullRequest
0 голосов
/ 26 апреля 2020
export type Message = [
    {
        id: 'message',
        settings: ComponentSettings;
    }
];

type Industrial = [
    {
        id: 'title',
        settings: ComponentSettings;
    },
    {
        id: 'text',
        settings: ComponentSettings;
    }
];

Я бы хотел разрешить T, только если T равен 'Message | Индустриальный '

export interface CardRef<T> {
    id: 'Industrial' | 'Message';
    childInstances?: T;
}

1 Ответ

2 голосов
/ 26 апреля 2020

Звучит так, как будто вы хотите, чтобы CardRef был типом объединения, а не типом с универсальным c параметром:

export type CardRef =
    {
        id: 'Industrial';
        childInstances?: Industrial;
    }
    |
    {
        id: 'Message';
        childInstances?: Message;
    };

Использование:

let x: CardRef = { id: 'Industrial' };
x.childInstances; // type is Industrial | undefined

let y: CardRef = { id: 'Message' };
y.childInstances; // type is Message | undefined

На детской площадке

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