일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- dp
- 백준 1197번 최소 스패닝 트리 - java
- 18111번 마인크래프트 - java 구현
- append
- mysql hy000 에러
- hash
- HashMap
- Stack
- 최소 힙 1927
- StringTokenizer
- ac 5430번
- 백준 1541
- 백준 3190번
- 프로그래머스 자바
- 백준 2473번 세 용액 - java
- map
- 코틀린기초
- replace()
- 프로그래머스
- Java
- 프로그래머스 java
- 백준 1043번 거짓말 - java 분리 집합
- toUpperCase
- HashSet
- StringBuilder
- 백준 1647번 도시 분할 계획 - java
- kotlin
- 백준 2467번 용액 자바 - 이분탐색
- 백준 14938번 서강그라운드
- 백준 1806번 부분합 java
Archives
- Today
- Total
말하는 컴공감자의 텃밭
TypeScript - 함수 오버로딩 본문
728x90
오버로딩
동일한 이름에 매개 변수만 다른 여러 함수를 만드는 것을 함수의 오버로딩이라고 한다.
바로 예제로 정리해보자
예제 1
add 라는 이름의 함수에 하나는 string, 하나는 number이다.
function add(a: any, b: any): any 를 통해 오버라이딩 해보자.
function add(a: string, b: string): string;
function add(a: number, b: number): number;
function add(a: any, b: any): any {
return a + b;
}
add("hello", "world");
add(1, 1);
만약 오버로딩되지 않은 값을 넣는다면?
예제 2
날짜를 만드는 Date 객체를 만드는 두가지를 오버로딩 하려한다.
1. timestamp를 통해 하나의 인자 전달
2. m,d,y 월 일 연도를 받아 3개의 인자를 전달하는 방식.
if (d !== undefined && y !== undefined) 를 통해 1번인지 2번인지를 판단해 준다.
만약 1번이라면 timestamp의 값이 들어가며, 조건에 충족하여 d 와 y를 입력받은 경우
new Date(y, mOrTimestamp, d); 를 통해 1번 함수로 m (월)을 넣어주고, 2번 함수로 y,d(년도, 일) 을 넣어준다.
function makeDate(timestamp: number): Date;
function makeDate(m: number, d: number, y: number): Date;
function makeDate(mOrTimestamp: number, d?: number, y?: number): Date {
if (d !== undefined && y !== undefined) {
return new Date(y, mOrTimestamp, d);
} else {
return new Date(mOrTimestamp);
}
}
const d1 = makeDate(12345678);
const d2 = makeDate(5, 5, 5);
const d3 = makeDate(1, 3);
그러나 마지막 d3의 경우 인자가 두개이므로
오류와 함께 다른 오버로드를 안내해준다.
참고 : https://www.typescriptlang.org/docs/handbook/2/functions.html
728x90
'백엔드 > TypeScript' 카테고리의 다른 글
TypeScript - 호출, 인덱스 시그니처 (0) | 2024.01.24 |
---|---|
Typescript - Type (0) | 2024.01.22 |
Comments