如何为异步函数提供多个返回类型

时间:2019-07-05 06:40:52

标签: typescript

我当前的函数可以返回已实现的字符串或自定义类型

   public getTenantsByEmail = (emailId: string): Promise<ITenants | string | IErrorResponse> => {
    if (emailId) {
        this.config = GetConfig();
        if (this.config.isMock) {
            return this.mock();
        } else {
            return getAxios.get(`tenants/emails/${emailId}`)
                .then((response: IHttpResponse) => response.data);
        }
    } else {
        return new Promise((resolve, reject) => reject('Invalid Email id'));
    }

}

但是当我使用此

return tenantRegistration.createTenant(postObject)
    .then((response: ITenants) => {
        expect(response.result.bucket).toBe('my-cool-bucket');
    });

我收到此错误

TS2345: Argument of type '(response: ITenants) => void' is not assignable to parameter of type '(value: string | ITenants | IErrorResponse) => void | PromiseLike<void>'.

参数“响应”和“值”的类型不兼容。     输入'string | ITenants |无法将“ IErrorResponse”分配给“ ITenants”类型。       不能将“字符串”类型分配给“ ITenants”类型。

如何将其用于多种返回类型?

0 个答案:

没有答案