での方法を作るためにどのように次のメソッドを持っている:私は何を達成したいことは、このメソッドの型チェックを取得するためにQ.Promiseとキャッチ節の型チェック
class A {
m(): Q.Promise<MyObject> {
return someAsyncOp()
.then(x => transformX(x))
.catch(err => {
log.error(err);
throw err; // <-- doesn't type check
})
}
}
ました。これまでのところ、catchブロックがPromiseでパラメータ化された型の何かを返すと予想されるため、現れます。
メソッドが戻るかスローすることができるので、これは奇妙です。私の考えでは、これは型チェックを行うべきです。
catch
句がないと、チェックが入力されます。 catch節では、コンパイルはエラーType Q.Promise<void> is not assignable to Q.Promise<MyObject>
で失敗します。このエラーは、コンパイラが私がcatch節で値を返すことを期待していると信じています。私が知っている限り、私は実行する必要はありません。
このタイプのチェックを行う方法はありますか?私は何か間違っているのですか、Typescriptは私がやろうとしていることをサポートしていませんか?
活字体のコンパイラのバージョン1.8.10
エラーを投げずにコードをコンパイルする方法はありません。 – pedromss
いいえ、私が言っていることは、 'throw'は型チェックされていないということです。それはうまくコンパイルされます。 – basarat
私が言っていることは、.jsファイルが生成されているが、コンパイルエラーがあるということです。私はそれを「コンパイル」と呼んでいません。私は 'Q.Promise'を使用しなければなりません。ありがとうございました –
pedromss