TS에만 있어 JS로 변경되면 삭제되고, 선언 방식 때문에 헷갈릴 수 있으니 안쓰는게 좋지만 개념은 알고 있어야 할듯.
함수의 명확한 사용 방법을 강제하기 위해서 같은 함수명으로 파라미터와 리턴 타입 명시를 중복선언해서 입력과 출력에 대한 확실한 모습들을 만드는 방식.
function stringOrStrings(members: string): string;
function stringOrStrings(
member1: string,
member2: string,
member3: string
): string;
function stringOrStrings(
memberOrMembers: string,
member2?: string,
member3?: string
): string {
if (member2 && member3)
return `아이브: ${memberOrMembers}, ${member2}, ${member3}`;
return `아이브: ${memberOrMembers}`;
}
console.log(stringOrStrings("안유진, 장원영, 레이"));
console.log(stringOrStrings("안유진", "장원영", "레이"));
console.log(stringOrStrings("안유진", "장원영")); // 에러
오버라이드로 첫 파라미터만 들어오는 경우와 파라미터 3개가 들어오는 경우만 설정해놓았기 때문에, 파라미터 2개가 들어오는 경우에 에러발생
학습 페이지
www.inflearn.com