null 병합 연산자 (nullish coalescing operator) ?? 은 nullish한 값(null 혹은 undefined)을 판별하여 or 연산을 하는 연산자이다.
(즉, null 과 undefined를 제외한 모든 Falsy 값을 그대로 리턴하기 위함. )
일반적으로 논리 연산자 ||를 사용해 Falsy 체크를 하는 경우가 많다.
(* Falsy : null, undefined,false, NaN, 0 , "" 등의 거짓 같은 값)
그런데 || 를 사용하면 "" , 0 와 같은 값 또한 false 로 판단하기 때문에 0, "" 값을 유효 값으로 사용해야 하는 경우 원치 않는 결과가 발생할 수 있다.
이럴 때 Nullish 병합 연산자 ??를 사용할 수 있다.
const volume = localStorage.volume || 0.5;
로컬에 저장된 volume 값이 있으면 그 값을 volume에 할당하고, 없으면 0.5를 할당하는 연산이다. 이 경우 volume 이 0이라면 false가 되어 volume 은 0.5 가 된다.
const volume = localStorage.volume ?? 0.5;
를 사용하면 volume 에 0이 들어오게 할 수 있다.
function printMessage(message?: string) {
console.log(message || "Hello, world!");
}
function printMessage(message?: string) {
console.log(message ?? "Hello, world!");
}
이 경우 default 값을 지정해 줄 때 ||이 아니라 ??을 쓰게 되면 빈 문자열도 출력해준다.
따라서 상황에 맞게 사용하면 의도치 못한 에러를 막을 수 있을것이다.
+)
https://typescript-eslint.io/rules/prefer-nullish-coalescing/
여기서 널 병합 연산자와 config 설정 관련 예제를 확인할 수 있다