![[TypeScript] TypeScript 공부일지: 함수 오버로딩 [6/12 study]](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbRAMJl%2FbtsHZy1vbpV%2FAAAAAAAAAAAAAAAAAAAAAOkJhSf5uMEIIT-NbfLIYw74bLoZizlC3r-PuKUTFH1O%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DB38It8GqQLB7LlSM88YspaoEm9k%253D)
[TypeScript] TypeScript 공부일지: 함수 오버로딩 [6/12 study]Frontend/TypeScript2024. 6. 12. 23:25
Table of Contents
TypeScript 공부일지: 함수 오버로딩
❗️주의
지극히 개인 공부한 내용을 올린 거기 때문에 이해하지 못할 수도 있음
❗️함수 오버로딩
/**
* 함수 오버로딩 (JS에서는 지원 안하고 TS에서만 지원함)
* - 함수를 매개변수의 개수나 타입에 따라서 여러가지 버전으로 만드는 문법
* - 하나의 함수 func
* - 모든 매개변수의 타입 number
* - ver1. 매개변수가 1개 -> 이 매개변수에 20을 곱한 값 출력
* - ver2. 매개변수가 3개 -> 이 매개변수를 다 더한 값을 출력
*/
// TS에서 함수 오버로딩을 구현하려면 첫번째로 할 게 있음
// 이 함수에 어떤 버전들이 있는지 알려줘야 함
// 구현부 없이 , 중괄호없이 그냥 계속 쓰면됨
// 이렇게 구현부 없이 선언식만 쓴것을 - 오버로드 시그니쳐 라고 부름
// func라는 함수에는 2가지 버전이 있다고 알려줌
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);
}
}
// 인수를 1,3개 넣은데 말고는 다 오류나옴
// func();
func(1); // 첫번째 버전과 맞아서 오류 없음
// func(1, 2);
func(1, 2, 3); // 두번째 버전과 맞아서 오류 없음
@동혁이 :: Eun_Frontend
프론트엔드 공부일지 입니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!