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>