首页 > 解决方案 > 你如何返回一个输入的 Promise

问题描述

下面的代码有效,但它承诺返回任何东西。我如何将其更改为承诺返回特定类型的 Promise 或 Promise 的联合?buildError 返回也输入为 Response 的内容。

public async getSomething(userId: string): Promise<any> {
    return new Promise((resolve: any, reject: any) => 
    {
        this.axios().get(baseUrl + path, config)
            .then((response: any) => {
                if (response && response.data && response.status === 200) {
                    resolve(response.data);
                } else {
                    reject(this.buildError(response.status || 500, userId));
                }
            })
            .catch((response: any) => {
                logger.error(response);
                const status = response.response ? response.response.status : 500;
                reject(this.buildError(status, userId));
    }
}

如果我键入 Promise,intelliJ 会抱怨类型“{}”不可分配给类型“响应”,类型“{}”中缺少属性“foo”。我试图将所有解决和拒绝都输入为响应。我假设 '{}' 指的是 => {...},但不清楚如何输入。

标签: typescripttypes

解决方案


最终做了这样的事情

public async getSomething(userId: string): Promise<Response> {
    return new Promise<Response>((resolve: any, reject: any) => 
    {
        this.axios().get(baseUrl + path, config)
            .then((response: any) => {
                if (response && response.data && response.status === 200) {
                    resolve(response.data);
                } else {
                    reject(this.buildError(response.status || 500, userId));
                }
            })
            .catch((response: any) => {
                logger.error(response);
                const status = response.response ? response.response.status : 500;
                reject(this.buildError(status, userId));
    }
}

推荐阅读