2017-08-16 9 views
0

を約束:エラーは、私が2から4に角度アプリケーションをアップグレードしているよ、と私は次のエラーを取得しています

Type 'Promise<void | Store>' is not assignable to type 'Promise<Store>'. 

タイプ「のボイド| Store 'をタイプ' Store 'に割り当てることはできません。 'void'タイプは 'Store'タイプに割り当てられません。問題の

行はこれです:

return this.http.get(url, { headers: this.headers }) 
      .toPromise() 
      .then(response => response.json().data as Store) 
      .catch((err) => { console.log('An error occurred under StoreService.StoreGetById', err); }); 

私はアップグレードする前にこれは働いていた、と私はRxJSにかなり新しいです。

+3

RxJSの問題ではありません。これはTypeScriptの問題です。そして、 'Promise 'タイプは状況をより正確に伝えます。あなたの 'catch'はエラーを呑み込んで何も返さないので、' void'を返します。可能なパスは2つあります.1つは 'Store'に解決します。もう1つは「無効」に解決されます。私はエラーを再スローすることによって問題を解決します。その後、参照エラーが発生した後にそれを飲み込むのは何ですか? – cartant

答えて

2

約束の拒否が自動的に記録されます - カートマンによるコメントの説明のように - .catchによって、| Voidの原因となっています。

JavaScript関数が何も返さない場合、デフォルトでundefinedが返されます。したがって、約束は店舗(then)または無効(catch)のいずれかになります。

正しい解決策IMOは、.catch句を完全に削除し、とにかく自動的にコンソールに記録される約束拒否に依存します。

関連する問題