ウェブサイト検索

typescript - 複数/複合の返り値の型


これはしますか

function foo(): () => void | string

ということは、それ

a) 関数fooは文字列を返すか、何も返さない別の関数を返す場合があります。

b) 関数fooは別の関数を返し、その関数は文字列を返す場合もあれば返さない場合もありますか?

また、もう一方の選択肢(どちらが間違っているか)を正確かつ明確にどのように表記しますか?

回答 #1

function foo():() => void | string : foo は入力パラメータを持たない関数で、その結果は void または string になる別の関数を返します

function foo(): void | string:fooは入力パラメータを持たず、voidまたはstringを返す関数です

function foo(): (() => void) | string : foo は入力パラメータを持たない関数で、string または void を返す別の関数を返します

回答 #2

`() => void | string` は文字列を返す場合も返さない場合もある関数の型ですが、文字列を返す関数はすでに `() => void` に代入可能であるため、あまり役に立たないように見えます。

もし「関数か文字列のどちらか」を望むなら、括弧を使うべきです:(() => void) | string。これは、演算子の優先順位通りに使いたくない他のケースでも括弧を使うのと同じ方法です。