생략을 허용할지, 값까지 보장할지 선택한다

두 문법 모두 호출 인자를 생략할 수 있지만, 함수 내부에 도착한 값의 의미가 다르다.

OPTIONAL

email?: string

생략 · undefinedundefined를 그대로 받음
문자열 전달string을 그대로 받음

내부 타입: string | undefined → 분기 필요

DEFAULT

prefix = "[INFO]"

생략 · undefined"[INFO]"로 치환
문자열 전달전달한 string 사용

내부 타입: string → 기본 동작 보장

호출 형태를 세 가지로 확인한다

fn()

선택형은 undefined, 기본형은 기본값으로 시작한다.

fn(undefined)

명시적으로 넘겨도 생략과 같은 경로를 탄다.

fn(null)

타입이 허용해야 하며, 기본값으로 치환되지 않는다.

배치 규칙: 필수 매개변수를 먼저 두고 선택형·기본형은 뒤에 둔다. 선택값이 늘어나면 options 객체가 더 명확하다.