[typescript] 타입 호환성과 구조적 타이핑

개요

타입스크립트는 정적 타입 시스템을 갖춘 자바스크립트의 확장판입니다. 이 글에서는 타입 호환성과 구조적 타이핑에 대해 알아보겠습니다.

타입 호환성

타입스크립트는 타입 호환성을 검사하여 서로 다른 타입의 변수들이 할당 가능한지를 판단합니다. 이때 할당 가능성은 값의 형태에 따라 결정됩니다. 즉, 하위 타입의 값은 상위 타입의 값으로 할당할 수 있습니다.

interface Named {
    name: string;
}

class Person {
    name: string;
}

let p: Named;
p = new Person(); // 타입 호환성: 클래스 Person은 인터페이스 Named와 할당 가능

위의 예시에서 Person 클래스는 Named 인터페이스와 할당 가능하며, 이는 타입 호환성의 한 예입니다.

구조적 타이핑

타입스크립트는 구조적 타이핑을 지원합니다. 즉, 타입 호환성이 값의 형태(구조)에 의해서만 결정된다는 의미입니다. 이는 명시적인 인터페이스 구현이나 상속 없이도 타입 호환성을 지원하므로 유용하게 활용될 수 있습니다.

interface Named {
    name: string;
}

let x: Named;
let y = { name: "Alice", location: "Seattle" };
x = y; // 구조적 타이핑: 속성 name만 존재하면 호환 가능

위의 예시에서 y의 구조가 Named 인터페이스와 호환되므로 x에 할당됩니다.

결론

타입 호환성과 구조적 타이핑은 타입스크립트의 강력한 특징으로, 코드의 유연성과 재사용성을 높여줍니다. 이를 통해 더 안정적이고 확장 가능한 프로그램을 개발할 수 있습니다.

더 많은 정보를 알고 싶다면 타입스크립트 공식 문서를 참고해보세요.