void Func(int a)
{
}
void Func(int a, int b, int c)
{
}
C#에서 오버로딩은 아래와 같이 쉽게 구현할 수 있다.
타입스크립트는 기본적으로 자바스크립트의 확장판이기 때문에 위와 같은 쉬운 문법적용이 되지 않는다. (빙빙 돌아서가는 느낌...)
오버로드 시그니처
// 오버로드 시그니처
function func(a: number): void;
function func(a: number, b: number, c: number): void;
우선 위와 같이 오버로드 시그니처를 만들어야한다. 이는 함수에서 사용할 선언식만을 작성한다.
구현 시그니처
//실제 구현부 (구현 시그니처)
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);
func(1, 2, 3);
왜 오버로드를 해야하는걸까?
오버로드 시그니처 없이, 구현 시그니처만으로도 문제가 없으리라고 생각할 수 있다.
func(1, 2);
그러나 위와 같은 출력에서 오버로드 시그니처가 없으면 에러를 나타내지 않는다.
그러므로 오버로드 시그니처가 반드시 필요하다.
'프로그래밍 > 타입스크립트' 카테고리의 다른 글
타입스크립트 - 인터페이스 (0) | 2025.02.14 |
---|---|
타입스크립트 - 사용자 정의 타입 가드 (0) | 2025.02.14 |
타입스크립트 - 함수 타입의 호환성 (0) | 2025.02.14 |
타입스크립트 - 함수 타입 표현식과 호출 시그니처 (0) | 2025.02.14 |
타입스크립트 - 함수 타입 (0) | 2025.02.14 |