Interfaz mecanografiada: ¿es posible hacer que se requieran las propiedades "una u otra"?
Posiblemente una pregunta extraña, pero tengo curiosidad por saber si es posible hacer una interfaz donde se requiere una propiedad u otra.
Así por ejemplo...
interface Message {
text: string;
attachment: Attachment;
timestamp?: number;
// ...etc
}
interface Attachment {...}
En el caso anterior, me gustaría asegurarme de quetext
oattachment
existe
Ojalá eso tenga sentido.
¡Gracias por adelantado!
Editar: Así es como lo estoy haciendo ahora. Pensé que era un poco detallado (escribiendo botkit para holgura).
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;
}