[typescript] 타입 호환성과 오버로드
타입 호환성과 오버로드는 TypeScript의 중요한 개념 중 하나입니다. 이러한 개념을 정확히 이해하는 것은 TypeScript를 사용하여 더욱 효과적으로 코드를 작성하는 데 도움이 될 것입니다.
타입 호환성(Type Compatibility)
타입 호환성은 서로 다른 타입들 간의 할당 가능성을 의미합니다. TypeScript에서는 구조적 타입 시스템(structural type system)을 사용하여 타입 간의 호환성을 확인합니다.
interface Animal {
name: string;
}
interface Dog {
name: string;
breed: string;
}
let animal: Animal;
let dog: Dog;
animal = dog; // 가능
dog = animal; // 불가능
위 예제에서 Dog
는 Animal
의 모든 속성을 가지고 있기 때문에 Animal
에 Dog
를 할당하는 것은 가능합니다. 반대로 Animal
은 Dog
의 모든 속성을 갖고 있지 않기 때문에 Dog
에 Animal
을 할당하는 것은 불가능합니다.
오버로드(Overload)
오버로드는 함수의 시그니처(signature)를 다르게하여 여러 가지 방식으로 호출될 수 있도록 하는 기능입니다.
function add(a: string, b: string): string;
function add(a: number, b: number): number;
function add(a: any, b: any): any {
return a + b;
}
위 예제에서 add
함수는 문자열 두 개를 입력으로 받아 문자열을 반환하거나, 숫자 두 개를 입력으로 받아 숫자를 반환할 수 있습니다. TypeScript는 호출 시 전달된 매개변수의 타입에 따라 적절한 오버로드를 선택합니다.
마무리
타입 호환성과 오버로드는 TypeScript를 사용하여 보다 유연하고 안전한 코드를 작성하는 데 중요한 개념입니다. 이러한 기능들을 올바르게 활용하여 코드를 작성하면 타입 안정성을 높일 수 있을 뿐만 아니라 코드의 가독성과 유지보수성을 개선할 수 있습니다.