1. ホーム
  2. typescript

[解決済み] オプションのパラメータが提供されたかどうかを確認するにはどうすればよいですか?

2023-05-03 06:32:47

質問

オプションのパラメータを持つ関数があります。

function DoSomething(a, b?) {
    /** Implementation */
}

関数本体の中でオプションのパラメータが提供されたかどうかを判断するにはどうしたらよいでしょうか。現在、私が思いつく最良の方法は

typeof b === 'undefined'

しかし、これではなんだかごちゃごちゃしていて、読むのに素直ではありません。TypeScriptはオプションのパラメータをサポートしているので、パラメータが提供されたかどうかを直感的に確認する方法も用意してほしいですね。

上の例でわかるように、オプショナルパラメータが明示的に undefined に設定されていても、全く供給されていなくても構いません。

編集

残念ながら、この質問は、特に流し読みされる場合、あるべきものとして明確ではありませんでした。それは、以下の方法について意図されていました。 きれいに オプションのパラメータが 完全に省略された というように、です。

DoSomething("some value");

エヴァンの解答は、彼の解答なので受け入れました( b === undefined )は私の質問のものよりもきれいです( typeof b === 'undefined' ) よりもすっきりしており、かつ同じ動作をしています。

他の回答は間違いなく有用であり、どの回答が正しいかはユースケースによります。

どのように解決するのですか?

値が未定義かどうかを確認すればよいのです。

var fn = function(a) {
    console.log(a === undefined);
};
    
fn();          // true
fn(undefined); // true
fn(null);      // false
fn('foo');     // false