【发布时间】:2016-10-07 21:13:50
【问题描述】:
可能是一个奇怪的问题,但我很好奇是否可以创建一个需要一个属性或另一个属性的接口。
所以,例如...
interface Message {
text: string;
attachment: Attachment;
timestamp?: number;
// ...etc
}
interface Attachment {...}
在上述情况下,我想确保 text 或 attachment 存在。
这就是我现在的做法。认为它有点冗长(为 slack 键入 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;
}
【问题讨论】:
-
看看我建议的解决方案here。
标签: typescript