함수 오버로딩이란 하나의 함수를 매개변수의 개수나 타입에 따라 다르게 동작하도록 만드는 문법으로, 타입스트립트에서는 지원하지만 자바스크립트에서는 지원하지 않는다.
오버로드 시그니처
타입스크립트에서 함수 오버로딩을 구현하려면 다음과 같이 버전별 오버로드 시그니처를 만들어야 한다.
function func(a: number): void;
function func(a: number, b: number, c: number): void;
이렇게 구현부 없이 선언부만 만들어둔 함수를 오버로드 시그니처라고 한다.
구현 시그니처
그 다음 실제로 함수가 어떻게 실행될 것인지를 정의하는 부분인 구현 시그니처를 만들어야 한다.

구현 시그니처의 매개변수는 모든 오버로드 시그니처와 호환되어야 한다.

따라서 b와 c는 선택적 매개변수로 정의해준다.
function func(a: number, b?: number, c?: number) {
if (typeof b === "number" && typeof c === "number") {
console.log(a + b + c);
} else {
console.log(a * 20);
}
}
함수 호출 시에는 오버로드 시그니처를 기준으로 타입 검사가 이루어진다. func(1, 2)는 어떤 오버로드 시그니처와도 일치하지 않으므로 오류가 발생한다.
function func(a: number, b?: number, c?: number) {
if (typeof b === "number" && typeof c === "number") {
console.log(a + b + c);
} else {
console.log(a * 20);
}
}
func(1); // ✅ 20
func(1, 2); // ❌
func(1, 2, 3); // ✅ 6'TIL' 카테고리의 다른 글
| [TS] 인터페이스 (0) | 2025.11.01 |
|---|---|
| [TS] 사용자 정의 타입 가드 (0) | 2025.11.01 |
| [TS] 함수 타입 정의 및 호출 시그니처 연습 (0) | 2025.11.01 |
| [TS] 함수 타입의 호환성 (0) | 2025.11.01 |
| [TS] 함수 타입 표현식과 호출 시그니처 (0) | 2025.11.01 |
