인터페이스와 함수의 차이
크다 작다로 접근하게 되서 크기를 재려고(?)하니 어려워지는게 아닌가 싶습니다. 단순하게 interface A { prop1: string } interface B { prop1: string; prop2: number; } let a: A = { prop1: `type A`} let b: B = { prop1: `type B`, prop2: 2} 의 경우 a 는 prop1를 포함하는 어떤 객체든 가질 수 있고 b는 prop1, prop2를 포함하는 어떤 객체든 가질 수으니 a 에는 b를 할당할 수 있으나 (a는 prop1만 분명히 존재하면 되니까) a = b; // possible b 에는 a를 할당할 수 없고 (b는 prop2가 없으면 타입 오류인데 a는 prop1으로만 존재하는 경우도 있으니까) b = a // type error let fn1 = function(a: number) {} let fn2 = function(a: number, b: number) {} 이런 경우라면 fn1는 number 타입의 파라미터 하나만 받는 함수를 가질 수 있고 fn2는 number 타입의 파라미터와 string 타입의 파라미터를 추가로 받는 함수를 가질 수 있으니 fn1에는 prop1 한개만 받으니까 prop1과 prop2 두 개 파라미터를 받아야 하는 fn2를 할당 할 수 없고 fn1 = fn2 // type error fn2에는 prop1과 prop2를 받으니까 prop1과 undefined인 prop2를 전달하게 되는 셈인 fn1은 할당 가능한 fn2 = fn1 // possible 형태로 생각하면 되지 않을까 싶습니다. (그런데 제가 제대로 이해한건 맞는..거.........겠............죠......?)