结合并集和相交类型与括号

时间:2018-11-20 09:09:22

标签: typescript

如果我有界面:

declare interface APIResponse {
  type: string
}

还有一些有效载荷:

declare interface Payload {
  prop: string
}

我也希望API响应可以为空,所以我想这样做:

methodName: () => (APIResponse & Payload) | null

即将响应与交集类型结合起来,还可以使整个内容为空。这可能吗?

1 个答案:

答案 0 :(得分:0)

是的,它的行为完全符合您的预期:

interface APIResponse {
  type: string
}

interface Payload {
  prop: string
}

class Example {
    methodName(): (APIResponse & Payload) | null {
        // OK
        return { type: 'str', prop: 'str' };

        // OK
        return null;

        // NO! Missing 'type'
        return { prop: 'str' };

        // NO! Missing 'prop'
        return { type: 'str' };
    }
}

我在其中留了多个陈述,显然-您只能有一个:)