2017-11-28 7 views
0

TSLintエラーが表示されます。「無効な値はPromise以外の値を待っています」 this.apiRequest(uri)の戻り型がrequest.RequestPromiseあるタイプの定義によればRequestPromiseで無効な待機が発生しました

private apiRequest: RequestAPI<request.RequestPromise, request.RequestPromiseOptions, RequiredUriUrl>; 
this.apiRequest = request.defaults({ 
     baseUrl: 'https://www.google.com/', 
     method: 'GET', 
     encoding: 'utf8' 
    }); 

const response: RequestResponse = <RequestResponse>await this.apiRequest(uri); 

コンテキストコード:次の行のために。 RequestPromiseは再び@タイプ/リクエスト-約束ライブラリで、次のように定義されています。それだけの約束を拡張するため、

interface RequestPromise extends request.Request, Promise<any> { 
     promise(): Promise<any>; 
} 

は、その後RequestPromiseを待つことはできないでしょうか?

答えて

1

これがうまくいかない理由は、要求約束がプロミスライブラリとしてブルーバードを使用しているためです。 Tslintはあなたがブルーバードの約束を待っていてネイティブの約束を待っているので、憂鬱です。あなたはネイティブの約束(リクエスト-約束ネイティブ)を使用して、リクエスト・ライブラリを使用することができますいずれかの警告tslintを取り除くために約束のオーバーライドに

import Promise = require('bluebird');

を見つける@types/request-promiseの上部に

解決済みの応答を待つためにawaitの代わりに.then()を単に使用してください。

関連する問題