찾다

 >  Q&A  >  본문

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); // <UserEntity null> if (!user) { // null 검사 throw new NotFoundUser(`사용자를 찾을 수 없음`); } // 'UserEntity | null' 유형은 'UserEntity' 유형에 할당할 수 없습니다. // 'null' 유형은 'UserEntity' 유형에 할당할 수 없습니다. 복귀 사용자; }</pre> <p>사용자 변수가 비어 있으면 예외를 발생시키고 그렇지 않으면 UserEntity를 반환하고 싶습니다. <br /><br />거기에 느낌표 2개를 넣으면 문제가 해결됩니다.


<pre class="brush:php;toolbar:false;">if (!!user) { // null 확인 throw new NotFoundUser(`사용자를 찾을 수 없음`); }</pre> <p>하지만 콘솔에 !!null을 입력하면 false가 반환되므로 이 경우 예외가 발생하는 상황은 절대 발생하지 않습니다. 왜 이런 문제가 발생합니까? </p>
P粉896751037P粉896751037481일 전512

모든 응답(1)나는 대답할 것이다

  • P粉267791326

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

    !!는 Boolean과 유사하므로 이 코드 줄에서는 Boolean(null)과 유사한 작업을 수행하므로 false가 됩니다. 왜냐하면 boolean에서는 null이 false이기 때문입니다. user === null을 사용하여 null인지 확인할 수 있습니다.

    회신하다
    0
  • 취소회신하다