[typescript] 인터페이스의 타입 호환성 검사 방법

TypeScript에서 인터페이스는 코드의 재사용성과 유연성을 높여주는 강력한 도구입니다. 때로는 서로 다른 인터페이스 간에 호환성을 검사해야 할 필요가 있습니다. 이러한 호환성 검사 방법에 대해 알아보겠습니다.

1. 인터페이스 호환성이란?

TypeScript에서는 인터페이스 간에 구조적인 호환성을 검사합니다. 이는 해당 인터페이스가 필요한 속성 및 메소드를 가지고 있는지를 확인하는 것입니다. 예를 들어, 다음과 같은 두 개의 인터페이스가 있다고 가정해봅시다.

interface User {
    name: string;
    age: number;
}

interface Admin {
    name: string;
    age: number;
    role: string;
}

위에서 UserAdmin 인터페이스는 nameage 속성을 가지고 있습니다. 이때, User 인터페이스는 Admin 인터페이스와 호환됩니다. 즉, UserAdmin으로 할당할 수 있습니다. 그 이유는 Admin 인터페이스가 User를 충족하면서 추가적인 role 속성을 가지고 있기 때문입니다.

2. 타입 호환성 검사 방법

TypeScript에서는 인터페이스 간의 호환성을 extends 키워드로 검사할 수 있습니다. 다음은 호환성 검사를 하는 예제 코드입니다.

interface User {
    name: string;
    age: number;
}

interface Admin {
    name: string;
    age: number;
    role: string;
}

function printUserInfo(user: User) {
    console.log(user.name, user.age);
}

let admin: Admin = {
    name: 'John Doe',
    age: 30,
    role: 'admin'
}

printUserInfo(admin); // OK, Admin은 User를 충족하므로 호환됨

위 코드에서 Admin 인터페이스를 User로 받는 printUserInfo 함수를 호출했을 때 어떠한 에러도 발생하지 않습니다. 이는 AdminUser를 충족하기 때문에 호환성이 있음을 의미합니다. 따라서, TypeScript는 같은 속성과 메소드를 가진 인터페이스끼리의 호환성 여부를 효과적으로 검사할 수 있습니다.

3. 결론

TypeScript에서는 인터페이스 간의 타입 호환성을 구조적으로 검사함으로써 코드의 유연성을 높이고, 재사용성을 높일 수 있습니다. 이를 통해 안정성 있는 코드를 작성할 수 있으며, 인터페이스를 효율적으로 활용할 수 있습니다.