타입스크립트에서 함수 오버로딩이란 ?
오버로딩의 일반적인 개념은 이름은 같지만 매개변수 타입과 반환 타입이 다른 여러 함수를 가질 수 있는 것을 말한다
타입 스크립트에서는 같은 이름의 여러 개를 정의할 수 있다 이때 각 함수는 서로 다른 타입을 가지는 매개변수로 선언되어야 한다.
매개변수의 개수는 동일하지만 타입이 다른 경우
두 개의 함수 선언과 하나의 함수 구현이 있는 동일한 함수가 존재한다 첫번째 함수선언은 문자열 타입인 두 매개변수를 가지며 두번째 함수 선언은 숫자형인 두 매개변수를 가진다.
마지막 함수에는 함수의 본문을 구현해야 한다 반환 타입은 위에서 선언한 두개의 함수에 따라 문자열 또는 숫자형 일 수 있으므로 any 타입으로 정의하며 매개변수도 any 타입으로 정의한다.
매개변수의 개수는 다르지만 타입은 동일한 경우
두개의 함수 선언과 하나의 함수 구현이 존재한다.
첫번째 함수 선언은 두 개의 매개변수를 가지며 두번째 함수는 3개의 매개변수를 갖는다.
마지막 함수에는 함수의 본문을 구현하였으며 두번째 매개변수와 세번째 매개변수는 선택적 프로퍼티를 사용한다
함수 호출에서 두번째 매개변수와 세번째 매개변수에 값을 전달하지 않으면 undefined로 할당된다 따라서 Null 병합 연산자(??)를 사용하여 null 또는 undefined인 경우 0을 반환하도록 한다.
매개변수의 개수와 타입이 다른 경우
네 개의 함수 선언과 하나의 함수 구현이 존재한다 네 개의 함수 선언은 서로 다른 갯수와 타입의 매개변수를 가진다
마지막 함수에는 함수의 본문을 구현하였으며 두번째 매개변수는 선택적 프로퍼티를 사용한다 그리고 전달되는 값이 숫자형 또는 문자열 일 수 있으므로 매개변수의 타입을 any 타입으로 정의한다.
만약 함수 호출에서 두 인자의 타입이 문자열인 경우 에러가 발생한다.
이는 네 개의 함수 선언에서 첫번째 매개변수와 두번째 매개변수가 문자열인 함수 선언문은 존재하지 않기 때문에 에러가 발생하는 것이다.
'타입스크립트' 카테고리의 다른 글
[TypeScript] - tsconfig.json 분석 (0) | 2022.10.22 |
---|---|
[TypeScript] - is 키워드 (0) | 2022.10.13 |
[Typescript] - const assertion ( + enum) (0) | 2022.09.15 |
[TypeScript] - 화살표 함수에서 제네릭 사용 방법 (0) | 2022.08.23 |
[TypeScript] - 타입 호환 (0) | 2022.07.29 |