TypeScript에서 인터페이스는 코드의 재사용성과 유연성을 높여주는 강력한 도구입니다. 때로는 서로 다른 인터페이스 간에 호환성을 검사해야 할 필요가 있습니다. 이러한 호환성 검사 방법에 대해 알아보겠습니다.
1. 인터페이스 호환성이란?
TypeScript에서는 인터페이스 간에 구조적인 호환성을 검사합니다. 이는 해당 인터페이스가 필요한 속성 및 메소드를 가지고 있는지를 확인하는 것입니다. 예를 들어, 다음과 같은 두 개의 인터페이스가 있다고 가정해봅시다.
interface User {
name: string;
age: number;
}
interface Admin {
name: string;
age: number;
role: string;
}
위에서 User
와 Admin
인터페이스는 name
과 age
속성을 가지고 있습니다. 이때, User
인터페이스는 Admin
인터페이스와 호환됩니다. 즉, User
를 Admin
으로 할당할 수 있습니다. 그 이유는 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
함수를 호출했을 때 어떠한 에러도 발생하지 않습니다. 이는 Admin
이 User
를 충족하기 때문에 호환성이 있음을 의미합니다. 따라서, TypeScript는 같은 속성과 메소드를 가진 인터페이스끼리의 호환성 여부를 효과적으로 검사할 수 있습니다.
3. 결론
TypeScript에서는 인터페이스 간의 타입 호환성을 구조적으로 검사함으로써 코드의 유연성을 높이고, 재사용성을 높일 수 있습니다. 이를 통해 안정성 있는 코드를 작성할 수 있으며, 인터페이스를 효율적으로 활용할 수 있습니다.