【问题标题】:How to mark to mark the return type of a function as a promise of a custom type如何标记以将函数的返回类型标记为自定义类型的承诺
【发布时间】:2017-06-16 17:45:39
【问题描述】:

我有一个看起来像这样的代码 sn-p

import * as Promise from 'bluebird';
import {Response} from '../commonInterfaces/httpService';

getCall(url: string, accessToken: string, extraHeaders: object): Promise<Response> {
    let headers = this.getHeaders(accessToken, extraHeaders);
    return new Promise((resolve, reject) => {
        request({
            url: url,
            method: "GET",
            withCredentials: false,
            json: true,
            headers: headers
        }, (err: Error, response: Response) => {
            if (err) {
                reject(err)
            } else {
                resolve(response)
            }
        });
    });
}

而 Response 是一个接口

interface Response {statusCode: number, body: object}

我收到以下错误

[ts]
Type 'Bluebird<{}>' is not assignable to type 'Bluebird<Response>'.
Type '{}' is not assignable to type 'Response'.
Property 'statusCode' is missing in type '{}'.

可能是什么问题?

【问题讨论】:

    标签: typescript bluebird


    【解决方案1】:

    似乎编译器不会通过调用 resolve(response) 来推断类型。
    您可以通过自己指定通用约束来“帮助”它:

    return new Promise<Response>((resolve, reject) => { ... });
    

    【讨论】:

      猜你喜欢
      • 2021-04-18
      • 1970-01-01
      • 2019-01-10
      • 2017-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-29
      相关资源
      最近更新 更多