私はそれがin TypeScriptがそうであるようにin Flowをチェック入力するには、このコードを期待していた。なぜ、返されたものに基づいて関数の型が推測されないのですか?
var onClick : (() => void) | (() => boolean);
onClick =() => { return true; }
代わりに、私はこのエラーを取得:
4: onClick =() => { return true; }
^function. Could not decide which case to select
3: var onClick : (() => void) | (() => boolean);
^union type
は、この設計上の決定のための一般的な名称があり、そして何でありますその背後にある推論?
returnステートメントから関数の戻り値の型を推測するようにFlow checkerに依頼することはできますか?
私はあなたのための答えを持っていないが、しかし、なぜありません'(()=> Promise | void)'を実行しますか? –
loganfsmyth
それは異なることを意味します: '()=> A | Bは単なる関数であり、時にはAを返し、他の時はBを返し、(()=> A)| (()=> B) 'は常に' A'を返す関数か常に 'B'を返す関数のいずれかです。例えば、 –
。 5行目のコールにカーソルを合わせてください:https://www.typescriptlang.org/play/index.html#src=const%20f%20%3D%20(x)%20%3D%3E%20console.log( 20%3D%3E%20Promise%3Cvoid%3E)%3B%0D%0Avar%20onClick%20%3A%20(()%20%3D%3E%20void) %3B%0D%0AonClick%20%3D%20%%20%%3D%3E%20F%22%%22%%3B%0D%0A%0D%0AonClick()%3B –