Typescript-Schnittstelle - Kann man "die eine oder andere" Eigenschaft erforderlich machen?

Möglicherweise eine merkwürdige Frage, aber ich bin gespannt, ob es möglich ist, eine Schnittstelle zu erstellen, in der die eine oder die andere Eigenschaft erforderlich ist.

So zum Beispiel ...

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

interface Attachment {...}

In dem obigen Fall möchte ich sicherstellen, dass entwedertext oderattachment existiert.

Hoffentlich macht das Sinn.

Danke im Voraus

Bearbeiten So mache ich das gerade. Dachte, es war ein bisschen wortreich (Tippe Botkit für Slack).

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

Antworten auf die Frage(4)

Ihre Antwort auf die Frage