타입 호환이란 특정 타입이 다른 타입에 잘 맞는지를 의미합니다.
interface Ironman {
name: string;
}
class Avengers {
name: string;
}
let i: Ironman;
i = new Avengers(); // OK, because of structural typing
타입호환은 구조적 타이핑(Structural Typing)이라고도 하는데,
Ironman
인터페이스는 name속성을 지니고 있고, Avengers
클래스 역시 공통으로 name 속성을 갖고 있습니다.
이런 구조적인 특징 덕분에, i
는 Avengers
의 객체로 선언할 수 있습니다.
+) 기본적으로 JS는 객체 리터럴이나 익명 함수 등을 사용하기 때문에 명시적으로 타입을 지정하는 것보다는 코드의 구조 관점에서 타입을 지정하는 것이 더 잘 어울립니다.