Interface de texto datilografado - É possível criar propriedades “uma ou outra” necessárias?
Possivelmente uma pergunta estranha, mas estou curioso para saber se é possível criar uma interface em que uma propriedade ou outra seja necessária.
Então, por exemplo ...
interface Message {
text: string;
attachment: Attachment;
timestamp?: number;
// ...etc
}
interface Attachment {...}
No caso acima, eu gostaria de ter certeza de quetext
ouattachment
existe.
Espero que isso faça sentido.
Desde já, obrigado!
Editar: É assim que estou fazendo agora. Pensei que era um pouco detalhado (digitando botkit por folga).
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;
}