오버로딩

  • TypeScript 에 있는 메서드 중 하나로 선언한 타입은 다르지만 같은 함수 명으로 사용할 수 있게 해주는 기능
  • 각 경우에 대해 새 함수를 만들 필요 없이 입력 인수에 따라 함수의 다른 구현을 제공하려는 경우에 특히 유용

 

예시

Interface User{
    id : number;
    name: string;
    age: number;
}

Interface UserQuery{
    id : number;
    name?: string;
    age?: number;
}


function findPerson(name: string): Person[];
function findPerson(age: number): Person[];
function findperson(userQuery: UserQuery) : Person;
function findPerson(query: string | number| UserQuery): Person[]| Person[]|Person {
  if (typeof query === "string") {
    // search by name
    return [{ id: 1, name: query, age: 30 },{ id: 10, name: query, age: 20 },...];
  } 
  if (typeof query === "number") {
    // search by age
    return [{ id: 15, name: "Alice", age: query }, { id: 3, name: "Bob", age: query }];
  }
  if (typeof query === "UserQuery"){
    // search by id with name or age
    return {id: queay, name: "Joey", age:30}
  }
}

 

 

 

참고자료

https://medium.com/@bobjunior542/master-function-overloading-in-typescript-with-these-simple-tips-169bea017aa4

+ Recent posts