-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
이전에 세영님(갓세영 @tpdud406 )께서 책을 꼼꼼히 읽어와주신 덕에 같이 !(null 아님 보장연산자)를 살펴봤었는데요.
null 체크를 위한 if 분기문 없이 보장해주다니.... 코드가 줄어서 어딘가 써먹어보고 싶었습니다.
사용해보니 타입단언과 같이 실행시점 에러를 막아주지 못하더라구요...!
그래서 !를 사용할 때의 장단점에 대해서 정리해봤습니다.
interface Books {
shuffle: Function
}
// 방법1. null 체크 코드를 추가한 경우
function shuffleBooks1(books: Books | null){
if(books === null) return;
let result = books.shuffle();
return result
}
// 방법2. !연산자를 사용한 경우
function shuffleBooks2(books: Books | null){
let result = books!.shuffle();
return result
}위 코드는 인자로 null이 들어오면 books.shuffle() 코드가 위험하기 때문에 null이 아님을 보장해주어야 하는데요.
[방법1] 처럼 if로 null 체크 로직을 적어줄 수도 있고, [방법2] 처럼 !를 넣어줄 수도 있습니다.
!를 사용하는 경우는 아무래도 null 체크로직을 넣는게 번거롭고 개발자가 null이 아니라는 확신이 있기 때문일거예요
다만 방법2와 같이 작성을 하게 되면, 예상치 못하게 null이 들어왔을 때 런타임 오류가 발생합니다.
단순히 타입 관점에서 null이 아니라고 보장하는 것이기 때문입니다. 가급적 !보다는 null체크 로직을 사용하는 것이 더 안전한 방법으로 보입니다.
bubobubobo and tpdud406bubobubobo
Metadata
Metadata
Assignees
Labels
No labels