매개변수 설계

선택적 매개변수는 “없을 수 있음”, 기본값은 “생략 시 정책”이다

문법 모양보다 호출자가 무엇을 생략할 수 있고, 함수가 어떤 값을 대신 넣는지를 먼저 구분합니다.

질문 1

호출마다 값이 반드시 필요한가?

없으면 함수 의미가 깨지는 값은 선택적으로 만들지 않습니다.

질문 2

생략해도 안전한 대표값이 있는가?

대표 정책이 분명하면 기본값을 두고, 없으면 optional로 의미를 드러냅니다.

질문 3

선택값이 여러 개로 늘어나는가?

위치 인자가 길어지면 객체 옵션으로 바꿔 호출부 이름을 남깁니다.

필수

값 없이는 의미가 없음

userId: string처럼 핵심 식별자는 필수로 둡니다.

?

값이 없을 수 있음

memo?: string처럼 부가 정보는 undefined 처리를 명시합니다.

=

생략 시 정책이 있음

limit = 20처럼 함수가 대신 넣을 값이 분명할 때 씁니다.

{}

선택값이 많아짐

세 개 이상이면 options 객체로 호출부 의도를 보존합니다.

순서 규칙

선택적 매개변수 뒤에 필수 매개변수를 두면 호출 모양이 불안정합니다.

타입 규칙

?는 타입에 undefined 가능성을 더한다는 뜻입니다.

호출부 규칙

불리언과 숫자 옵션이 이어지면 이름 있는 객체가 더 안전합니다.