[typescript] 제네릭 인터페이스를 사용하여 다른 모듈과의 인터페이스 정의하기
다른 모듈과 상호 작용할 때 인터페이스 정의는 매우 중요합니다. 특히, 타입 안전성과 코드 유지보수를 위해서입니다. TypeScript에서는 제네릭을 사용하여 다른 모듈과의 인터페이스를 정의할 수 있습니다.
제네릭 인터페이스란?
제네릭 인터페이스는 특정 타입에 의존하지 않고 다양한 타입에 대해 재사용 가능한 인터페이스를 정의할 수 있도록 해줍니다. 이를 통해 모듈 간의 유연한 상호작용이 가능해집니다.
예를 들어, 다음과 같이 Stack 인터페이스를 제네릭으로 정의할 수 있습니다:
interface Stack<T> {
push(item: T): void;
pop(): T;
}
위의 예시에서 TypeScript 제네릭 문법인 <T>
는 타입 매개변수를 나타냅니다. 이제 이 인터페이스를 사용하는 다른 모듈에서 Stack
인터페이스를 구체적인 타입으로 정의할 수 있게 됩니다.
제네릭 인터페이스를 사용하면 다른 모듈과의 인터페이스 정의 시 유연성을 확보할 수 있습니다.
제네릭 인터페이스 예시
다음은 제네릭 인터페이스를 사용하여 다른 모듈과의 인터페이스를 정의하는 예시입니다.
// stack.ts
interface Stack<T> {
push(item: T): void;
pop(): T;
}
export default Stack;
위 코드는 Stack
인터페이스를 제네릭으로 정의하고, 모듈 외부로 공개합니다.
// main.ts
import Stack from './stack';
class NumberStack implements Stack<number> {
private items: number[] = [];
push(item: number): void {
this.items.push(item);
}
pop(): number {
return this.items.pop();
}
}
const stack = new NumberStack();
stack.push(1);
const item = stack.pop();
console.log(item); // 1
main.ts
모듈에서는 Stack
인터페이스를 NumberStack
클래스로 구체화하여 사용하는 예시입니다.
제네릭 인터페이스를 사용하면 모듈 간의 인터페이스 정의 시 유연성을 확보할 수 있습니다.
위 예시를 통해 TypeScript에서 제네릭 인터페이스를 사용하여 다른 모듈과의 인터페이스를 정의하는 방법에 대해 설명했습니다. 이를 통해 모듈 간의 상호작용을 더욱 유연하고 안전하게 구현할 수 있습니다.