제네릭(generic)은 TypeScript에서 강력한 기능 중 하나로, 재사용성을 높여주는 도구입니다. 제네릭을 사용하여 자료형을 동적으로 처리할 수 있으며, 컴파일 시점에 타입 체크를 보장할 수 있습니다.
이번 포스트에서는 TypeScript에서 제네릭을 사용하여 인터페이스를 정의하는 방법에 대해 알아보겠습니다.
제네릭을 사용한 기본적인 인터페이스 정의
제네릭을 사용하면, 인터페이스를 정의할 때 특정한 타입을 사전에 지정하지 않고, 재사용성 있게 정의할 수 있습니다.
interface Box<T> {
value: T;
}
위 코드에서 Box
인터페이스는 T
라는 제네릭 타입을 받아들이는데, 이는 어떠한 타입이든 사용될 수 있음을 의미합니다.
제네릭을 사용한 함수 타입 정의
제네릭을 사용하여 함수의 매개변수 타입이나 반환 타입을 동적으로 처리할 수 있습니다.
function identity<T>(arg: T): T {
return arg;
}
위의 identity
함수에서 매개변수 arg
와 반환 타입은 제네릭을 이용하여 동적으로 처리됩니다.
제네릭을 사용한 클래스 정의
제네릭을 사용하여 클래스를 정의할 경우, 클래스 내부에서 사용하는 타입을 외부에서 동적으로 지정할 수 있습니다.
class Queue<T> {
private data: T[] = [];
push(item: T) {
this.data.push(item);
}
pop(): T | undefined {
return this.data.shift();
}
}
위의 Queue
클래스는 T
제네릭 타입을 받아들이는데, 이를 통해 큐에 저장되는 값의 타입을 지정할 수 있습니다.
결론
제네릭을 사용하여 인터페이스, 함수, 클래스를 정의하면, 코드의 재사용성을 높일 뿐만 아니라 타입 안정성을 보장할 수 있습니다. TypeScript에서 제네릭을 적절히 활용하면, 유연하면서도 안정적인 코드를 작성할 수 있습니다.
제네릭을 사용한 인터페이스 정의에 대해 알아본 것처럼, TypeScript에서 제네릭을 적재적소에 활용하여 보다 견고한 소프트웨어를 개발하는 데 도움이 될 것입니다.
참고문헌: