[typescript] 제네릭 타입의 상속과 확장
제네릭 타입은 TypeScript에서 다형성을 구현하는 데 사용되며, 코드를 보다 유연하게 작성할 수 있게 도와줍니다. 이번 블로그 포스트에서는 TypeScript에서 제네릭 타입의 상속과 확장에 대해 알아보겠습니다.
제네릭 타입 기본 개념
먼저, TypeScript에서 제네릭 타입은 코드를 작성할 때 타입을 인수로 가지는 것을 의미합니다. 예를 들어, 배열을 다루는 함수를 작성할 때 배열의 요소 타입을 제네릭으로 지정하여 재사용성을 높일 수 있습니다.
function reverse<T>(input: T[]): T[] {
return input.reverse();
}
const numbers = [1, 2, 3, 4, 5];
const reversedNumbers = reverse(numbers); // [5, 4, 3, 2, 1]
위 예제에서 reverse
함수는 제네릭 타입 T
를 이용하여 배열의 요소 타입을 동적으로 처리하고 있습니다.
제네릭 타입 상속
TypeScript에서는 제네릭 타입을 기반으로 하는 새로운 제네릭 타입을 만들 수 있습니다. 이를 통해 여러 제네릭 타입 간에 상속 관계를 형성할 수 있습니다.
interface Result<T> {
value: T;
error: string | null;
}
interface SuccessResult<T> extends Result<T> {
value: T;
error: null;
}
interface ErrorResult<T> extends Result<T> {
value: null;
error: string;
}
위 예제에서 SuccessResult
와 ErrorResult
는 Result
제네릭 타입을 상속하여 value
와 error
속성을 가집니다.
제네릭 타입 확장
또한, TypeScript에서는 제네릭 타입을 인터페이스와 함께 사용하여 확장할 수 있습니다.
interface Box<T> {
value: T;
}
interface BoxWithNumber<T> extends Box<T> {
value: T;
number: number;
}
위 예제에서 BoxWithNumber
인터페이스는 Box
제네릭 타입을 확장하여 number
속성을 추가하고 있습니다.
제네릭 타입의 상속과 확장은 코드의 유연성과 재사용성을 높일 수 있는 강력한 도구입니다. TypeScript에서 제네릭을 다뤄보면서 상속과 확장을 통해 더욱 효과적인 다형성을 구현해보시기를 권장합니다.
참고문헌: TypeScript Handbook - Generics