Интерфейс Typescript - Возможно ли сделать так, чтобы «одно или другое» свойство было обязательным?

Возможно странный вопрос, но мне любопытно, возможно ли создать интерфейс, в котором требуется одно или другое свойство.

Так, например ...

interface Message {
    text: string;
    attachment: Attachment;
    timestamp?: number;
    // ...etc
}

interface Attachment {...}

В приведенном выше случае я хотел бы убедиться, что либоtext или жеattachment существует.

Надеюсь, это имеет смысл.

Заранее спасибо!

Редактировать: Вот как я это делаю прямо сейчас. Думал, что это было немного многословно (набрав botkit для слабины).

interface Message {
    type?: string;
    channel?: string;
    user?: string;
    text?: string;
    attachments?: Slack.Attachment[];
    ts?: string;
    team?: string;
    event?: string;
    match?: [string, {index: number}, {input: string}];
}

interface AttachmentMessageNoContext extends Message {
    channel: string;
    attachments: Slack.Attachment[];
}

interface TextMessageNoContext extends Message {
    channel: string;
    text: string;
}

Ответы на вопрос(2)

Ваш ответ на вопрос