Eun_Frontend
  • [TypeScript] TypeScript 공부일지: 함수 오버로딩 [6/12 study]
    2024년 06월 12일 23시 25분 25초에 업로드 된 글입니다.
    작성자: 동혁이

     

     

    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); // 두번째 버전과 맞아서 오류 없음
    댓글