打字稿要求-承诺没有重载符合此要求

时间:2019-12-27 15:13:47

标签: node.js typescript request-promise

以下代码在我的请求中失败了, 我已经尝试清理node_modules并再次安装依赖项

 try {
        const response = await request(reqOptions) // Error Highlighting `reqOptions`;
        this.products = _.concat(this.products, response.products);
        if(response.nextPage){
          return this.getProductsCatalog(response.nextPage);
        } else {
          return Promise.resolve(this.products);
        }
      } catch(err) {
        logger.error(err);
        return Promise.reject(err);
      }

错误

  

没有重载匹配此调用。     重载3之1,'(uri:字符串,选项?:RequestPromiseOptions,回调?:RequestCallback):RequestPromise',出现以下错误。       类型'{标题的参数:{'content-type':字符串; }; }'不可分配给'string'类型的参数。     重载2之3,'(uri:字符串,回调?:RequestCallback):RequestPromise',出现以下错误。       类型'{标题的参数:{'content-type':字符串; }; }'不可分配给'string'类型的参数。     重载3之3,'((选项:(UriOptions&RequestPromiseOptions)|(UrlOptions&RequestPromiseOptions),回调?:RequestCallback):RequestPromise <...>'产生以下错误。       类型'{标题的参数:{'content-type':字符串; }; }'不可分配给'(UriOptions&RequestPromiseOptions)类型的参数| (UrlOptions&RequestPromiseOptions)”。         输入'{headers:{'content-type':string; }; }”不能分配给“ UrlOptions&RequestPromiseOptions”类型。           类型'{标题中缺少属性'url':{'content-type':string; };

整个功能

  async getProductsCatalog(url: string): Promise<Product[]>{
    if(url === null) {
      this.products = [];;
      return this.sendGetRequest('/v1/catalog/products', 
        {
          pageSize: 40
        }
      )
      .then((res) => JSON.parse(res))
      .then((res) => {
        const response: ProductCatalogResponse = res;
        this.products = _.concat(this.products, response.products)
        if(response.nextPage) {
          return this.getProductsCatalog(response.nextPage);
        } else {
          return Promise.resolve(this.products);
        }
      });
    } else {
      let reqOptions = {
        headers: {
          'content-type': 'application/json'
        }
      };

      this.visitRequest(reqOptions, 'GET', url, {pageSize: 40}, false)
      try {
        const response = await request(reqOptions);
        this.products = _.concat(this.products, response.products);
        if(response.nextPage){
          return this.getProductsCatalog(response.nextPage);
        } else {
          return Promise.resolve(this.products);
        }
      } catch(err) {
        logger.error(err);
        return Promise.reject(err);
      }
    }

  }

0 个答案:

没有答案