Möglicherweise eine seltsame Frage, aber ich bin neugierig, ob es möglich ist, eine Schnittstelle zu machen, wo die eine oder die andere Eigenschaft benötigt wird.Typescript Interface - Kann man "eine oder andere" Eigenschaften benötigen?
So zum Beispiel ...
interface Message {
text: string;
attachment: Attachment;
timestamp?: number;
// ...etc
}
interface Attachment {...}
Im obigen Fall, würde ich sicherstellen möchte, dass entweder text
oder attachment
existiert.
Hoffentlich macht das Sinn.
Vielen Dank im Voraus!
Edit: Dies ist, wie ich es jetzt tue. Dachte, es war ein bisschen ausführlich (Botkit für locker).
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;
}
schreiben, aber dies wird ihm erlauben, nicht zu Habe eine Nachricht mit einem Text und einem Anhang – Roberto
Danke für die Antwort Ryan! So mache ich es gerade jetzt. Ich habe das zu meiner Frage oben hinzugefügt. War mir nicht sicher, ob es einen saubereren Weg gab. – dsifford