検索

ホームページ  >  に質問  >  本文

Null値の型チェック

<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粉896751037P粉896751037519日前538

全員に返信(1)返信します

  • P粉267791326

    P粉2677913262023-08-04 10:36:33

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

    返事
    0
  • キャンセル返事