[typescript] 제네릭 인터페이스를 활용하여 서로 다른 유형의 데이터 연산 구현하기

제네릭 인터페이스를 사용하면 서로 다른 유형의 데이터를 처리 및 연산하는 함수 및 클래스를 구현할 수 있습니다. 이 기능은 TypeScript에서 매우 유용하며, 코드의 재사용성을 높이고 유연성을 제공합니다.

제네릭 인터페이스란?

제네릭 인터페이스는 인터페이스의 유형을 매개변수화하여 여러 유형에 대해 일반적으로 작동하도록 하는 TypeScript의 기능입니다. 이를 통해 동일한 인터페이스를 사용하면서 서로 다른 유형을 다룰 수 있습니다.

예를 들어, 다음은 값을 저장하고 해당 값을 연산하는 제네릭 인터페이스의 예시입니다.

interface Calculator<T>{
    value: T;
    add: (x: T, y: T) => T;
}

const numberCalculator: Calculator<number> = {
    value: 5,
    add: (x, y) => x + y
};

const stringCalculator: Calculator<string> = {
    value: "hello",
    add: (x, y) => x + y
};

위 예시에서 Calculator 인터페이스는 제네릭으로 정의되어 있고, numberCalculatorstringCalculator는 서로 다른 유형의 데이터를 다루며 구현되었습니다.

실제 활용 예시

다음은 제네릭 인터페이스를 사용하여 서로 다른 유형의 배열을 연결하는 함수의 구현 예시입니다.

interface Concatenator<T>{
    concatenate: (arr1: T[], arr2: T[]) => T[];
}

const arrayConcatenator: Concatenator<string> = {
    concatenate: (arr1, arr2) => arr1.concat(arr2)
};

const result = arrayConcatenator.concatenate(["typescript", "is"], ["awesome"]);
console.log(result); // ["typescript", "is", "awesome"]

위 코드에서 Concatenator 인터페이스는 배열을 연결하는 함수를 정의하는데 사용되며, arrayConcatenator는 제네릭으로 문자열 배열을 다루도록 정의되었습니다.

제네릭 인터페이스를 활용하면 다양한 유형의 데이터에 대해 일반적인 연산을 구현할 수 있으며, 이는 코드의 재사용성을 높이고 유지보수를 용이하게 만듭니다.

마무리

제네릭 인터페이스를 사용하여 서로 다른 유형의 데이터를 다루고 연산하는 방법을 살펴보았습니다. 이를 통해 TypeScript 코드의 유연성과 확장성을 높일 수 있으며, 코드의 일반화와 재사용성을 제고할 수 있습니다.