문법 · TS · beginner

optional과 nullish: ?. ?? !

없을 수 있는 값을 안전하게 읽고, 기본값을 붙이는 패턴.

배우기 · TypeScript 문법 · 12분 · 5/7 · TypeScript · null

이 트랙 목차 (7)
  1. 1. 타입 주석·유니온·좁히기
  2. 2. interface · type · 제네릭 맛보기
  3. 3. 좁히기·가드: typeof, in, 판별 유니온
  4. 4. 배열·제네릭 함수 스케치
  5. 5. optional과 nullish: ?. ?? !
  6. 6. Promise와 async 함수 타입
  7. 7. 튜플·readonly 감각

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] ?? '' 또는 길이 가드를 두세요.

체크리스트

  1. ||가 필요한가, ??가 맞는가?
  2. ! 대신 if 가드로 충분한가?
  3. ?. 체인이 너무 길면 중간 변수로 쪼갤 것

연습

연습장에서 string | undefined를 받는 함수를 만들고, ?./??만으로 기본 문자열을 반환해 보세요.

한 줄

> 없을 수 있으면 ?., 기본값은 ??, !는 최후 수단.

관련 짧은 원리

관련 문제