Möglicherweise eine seltsame Frage, aber ich bin gespannt, ob es möglich ist, eine Schnittstelle zu erstellen, bei der die eine oder andere Eigenschaft erforderlich ist.
Also zum Beispiel ...
interface Message {
text: string;
attachment: Attachment;
timestamp?: number;
// ...etc
}
interface Attachment {...}
Im obigen Fall möchte ich sicherstellen, dass entweder textoder attachmentvorhanden ist.
Hoffentlich macht das Sinn.
Danke im Voraus!
Bearbeiten: So mache ich es gerade. Dachte, es war ein bisschen ausführlich (Eingabe von 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;
}