Null値の型チェック
P粉896751037
P粉896751037 2023-08-03 11:34:29
0
1
451
<p>サービスにメソッドを作成したところですが、if ステートメント ブロックで null チェックを行ったにもかかわらず、型が null 値を返す可能性があるという問題が発生しました。 </p> <pre class="brush:php;toolbar:false;">public async getUserById(id: string): Promise<UserEntity> { const user = this.userRepository.getById(id); // を返します。 if (!user) { // null をチェックする throw new NotFoundUser(`見つからないユーザー`); } // 型 'UserEntity | null' は型 'UserEntity' に割り当てることができません。 // 型 'null' は型 'UserEntity' に割り当てることができません。 リターンユーザー。 }</pre> <p>ユーザー変数が空の場合は例外をスローし、空でない場合は UserEntity を返したいと考えています。 <br /><br />そこに感嘆符を 2 つ入れると、問題は解決します。 </p>


<pre class="brush:php;toolbar:false;">if (!!user) { // null をチェックする throw new NotFoundUser(`見つからないユーザー`); }</pre> <p>しかし、コンソールに !!null と入力すると false が返されるため、この場合、例外がスローされる状況には陥りません。なぜこのような動作が起こるのでしょうか? </p>
P粉896751037
P粉896751037

全員に返信(1)
P粉267791326

!! は Boolean に似ているため、このコード行では Boolean(null) と同様のことを実行し、Boolean 値では null が false になるため、false が返されます。 user === null を使用して、null かどうかを確認できます。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!