当前位置: 首页 > 知识库问答 >
问题:

打字稿界面 - 是否可以使“一个或另一个”属性成为必需的?

柴晔
2023-03-14

这可能是一个奇怪的问题,但我很好奇是否有可能在需要某个属性的地方创建一个接口

所以,举个例子…

interface Message {
    text: string;
    attachment: Attachment;
    timestamp?: number;
    // ...etc
}

interface Attachment {...}

在上面的例子中,我希望确保< code>text或< code>attachment存在。

这就是我现在的做法。认为它有点冗长(为松弛键入僵尸工具包)。

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;
}

暂时还没有答案

 类似资料: