Интерфейс Typescript - Возможно ли сделать так, чтобы «одно или другое» свойство было обязательным?
Возможно странный вопрос, но мне любопытно, возможно ли создать интерфейс, в котором требуется одно или другое свойство.
Так, например ...
interface Message {
text: string;
attachment: Attachment;
timestamp?: number;
// ...etc
}
interface Attachment {...}
В приведенном выше случае я хотел бы убедиться, что либоtext
или жеattachment
существует.
Надеюсь, это имеет смысл.
Заранее спасибо!
Редактировать: Вот как я это делаю прямо сейчас. Думал, что это было немного многословно (набрав botkit для слабины).
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;
}