首页 > 解决方案 > 匹配 Promise 响应的多个接口之一

问题描述

我有一个 API 处理程序,它返回一个type. 根据 API 响应,返回的对象可以是以下接口之一:

export interface Event {
  statusCode: number
}

export interface CreateEvent extends Event {
  data: Object
}

export interface Forbidden {
  message: string
}

当我对这两种类型中的任何一种进行测试时,我似乎都无法正确选择这些类型。this value doesn't exist on type:当它是一个成功的响应时,所有的都会返回类似于Forbidden 的缺失值的东西”

我期望:

type ApiResponse = Forbidden | Event | CreateEvent

或者

export enum ApiResponse {CreateEvent, Forbidden, Event}

将 api 函数返回类型设置为:

callApi = (event: Event): Promise<ApiResponse>   => {...}

我不确定ts对此有何期待。似乎是非常基本的行为。

标签: typescript

解决方案


如果一个函数返回三项中的一项,您将需要一个类型保护或类型断言函数来确定它是三项中的哪一项。


推荐阅读