optional chaining `?.`
const name = user?.profile?.name;
const n = arr?.[0];
const v = map.get(k)?.toFixed(2);
중간에 null/undefined면 전체 식은 undefined가 되고, 예외는 나지 않습니다.
nullish coalescing `??`
const s = input ?? '';
const n = count ?? 0;
??는 null/undefined일 때만 오른쪽을 씁니다. ||는 0, '', false도 기본값으로 바꿔 버려 실수하기 쉽습니다.
non-null assertion `!` (조심)
const el = document.getElementById('x')!;
컴파일러에게 “여기는 있다”고 우기는 문법입니다.
테스트·연습 코드에서는 가드가 더 안전합니다.
const el = document.getElementById('x');
if (!el) return;
유니온과 함께
type Msg = { text: string } | null;
function len(m: Msg): number {
return m?.text.length ?? 0;
}
?.로 좁히고, 없을 때 ??로 기본값을 줍니다.
문제 풀이에서
입력 파싱 후 빈 배열·빈 문자열이 흔합니다. tokens[0]을 바로 쓰지 말고 tokens[0] ?? '' 또는 길이 가드를 두세요.
체크리스트
||가 필요한가,??가 맞는가?!대신if가드로 충분한가??.체인이 너무 길면 중간 변수로 쪼갤 것
연습
연습장에서 string | undefined를 받는 함수를 만들고, ?./??만으로 기본 문자열을 반환해 보세요.
한 줄
> 없을 수 있으면 ?., 기본값은 ??, !는 최후 수단.