[typescript] 함수와 메서드의 타입 호환성 이해하기

TypeScript는 자바스크립트의 타입 시스템을 갖춘 상위 집합 언어로, 정적 타입 검사를 통해 코드의 안정성을 향상시킵니다. 이에는 함수와 메서드의 타입을 호환시키는 것도 포함됩니다. 이번 블로그에서는 TypeScript에서 함수와 메서드의 타입 호환성에 대해 알아보겠습니다.

함수 타입 호환성

TypeScript에서 함수는 매개변수 타입과 반환 타입에 민감하여 호환성을 검사합니다. 가령, 다음과 같은 두 함수가 있다고 가정해봅시다.

type UnaryFunction = (x: number) => number;

function square(x: number): number {
    return x * x;
}

function double(x: number): number {
    return x * 2;
}

이때, sqaure 함수와 double 함수는 UnaryFunction 타입을 만족시킵니다. 따라서, 두 함수는 서로 호환 가능합니다.

메서드 타입 호환성

클래스의 메서드 역시 타입 호환성을 고려해야 합니다. TypeScript에서는 메서드의 매개변수 타입, 반환 타입, 그리고 호출 시의 컨텍스트를 검사하여 호환 가능 여부를 판단합니다.

class Animal {
    move(distance: number): void {
        console.log(`Animal moved ${distance} meters`);
    }
}

class Dog extends Animal {
    move(distance: number): void {
        console.log(`Dog walked ${distance} meters`);
    }
}

위의 예시에서, Dog 클래스는 Animal 클래스의 메서드를 오버라이딩하고 있습니다. 이때, Dog 클래스의 move 메서드는 Animal 클래스의 move 메서드와 타입 호환됩니다.

결론

TypeScript에서 함수와 메서드의 타입 호환성은 매우 중요합니다. 정확한 타입 호환성을 유지함으로써 코드의 안정성을 높일 수 있고, 개발자들이 예상치 못한 문제를 사전에 방지할 수 있습니다.

함수와 메서드의 타입 호환성에 대한 더 자세한 내용은 TypeScript 공식 문서를 참고하시기 바랍니다.


이상으로 TypeScript에서 함수와 메서드의 타입 호환성에 대해 알아보았습니다. TypeScript의 타입 시스템은 코드 작성 시 안정성을 제고하는데 큰 도움을 줍니다. 요약하자면, 함수와 메서드의 타입 호환성을 잘 이해하고 활용함으로써 안전하고 견고한 코드를 작성할 수 있습니다.