Structural SubTyping (구조적 서브타이핑)

interface Obj1 {
  x:number;
  y:number;
}

interface Obj2 { 
 x:number;
 y:number;
 name:string;
}

const someFun(arg:Obj1){
   return console.log(arg.x, arg.y);
}

const someVal:Obj2 = { x:1, y:1, name: 'hi' };
someFun(someVal);

Duck Typing과의 차이점

  1. 덕타이핑은 런타임에 타입 체크함
  2. 구조적 타이핑은 타입 시스템 기반에서 컴파일타입 (혹은 타입체커)에서 타입 체크함
  3. 둘다 객체의 변수, 메서드같은 필드 기반으로 타입을 체크하지만 덕타이핑은 동적타이핑에서, 구조적타이핑은 정적타이핑에서 쓰임
  4. 덕타이핑은 다형성 관점에서 주목해야하고, 구조적 타이핑은 타입체킹 관점이다.