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