덕 타이핑(Duck Typing) 이란?

  • 사실상 위의 정의가 Duck Typing의 알파이지 오메가 이다. (핵심 내용을 담고 있다)

  • Duck Typing의 개념은 Duck Test에서 유래하였다.

  • Duck Typing은, **컴퓨터 프로그래밍 개념(패턴, 방법)**이다.

    • 컴퓨터 프로그래밍 언어에서 Type을 추론, (혹은 유추, 정의) 할때 사용된다.
    • 예제
    // Typescript - Duck Typing
    interface Duck {
        talk(): void;
        swim(): void;
    }
    
    const duck = {
      talk: () => "꽥꽥",
      swim: () => "오리 수영",
    }
    
    const human = {
      talk: () => "안녕하세요",
      swim: () => "사람 수영",
    }
    
    function duckSwimAndTalk(duckType: Duck): void {
        return `swim >${duckType.swim()}, talk > ${duckType.talk()}`;
    }
    
    duckSwimAndTalk(duck);
    duckSwimAndTalk(human); // human이지만 Duck(interface) type 형태로 인식
    • 위 코드를 보면 ”어떤 타입에 걸맞은 변수와 메소드를 지니면 객체를 해당 타입에 속하는 것으로 간주” 하고 있다.
    • 이처럼 구조가 같으면 같은 타입으로 간주하는 방식을 Structural Typing, Java/C# 등과 같이 이름을 기준으로 타입을 나누는 방식을 Nominal Typing이라 한다.

참고