고급 TypeScript - 함수와 제네릭: 제네릭 함수

함수와 제네릭: 제네릭 함수

제네릭 함수는 TypeScript에서 매우 중요한 개념으로, 다양한 타입을 처리할 수 있는 유연한 함수를 만드는 데 사용됩니다. 이러한 함수는 특정 타입에 의존하지 않고, 호출 시점에 제공되는 인수의 타입에 따라 동적으로 작동합니다. 이로 인해 코드 재사용성이 높아지고, 더 안전한 타입 검사를 통해 런타임 오류를 줄일 수 있습니다.

제네릭 함수의 기본 구조

제네릭 함수를 정의하려면 <T>와 같은 형식 매개변수를 사용하여 해당 함수를 선언합니다. T는 일반적으로 어떤 데이터 타입이든 될 수 있으며, 여러 개의 형식 매개변수를 사용할 수도 있습니다.

function identity<T>(arg: T): T {
    return arg;
}

위의 예시에서 identity라는 이름의 제네릭 함수를 정의했습니다. 이 함수는 입력값과 동일한 값을 반환하며, 입력값의 타입은 호출 시 결정됩니다.

사용 예시

  1. 기본적인 사용

    let output1 = identity<string>("Hello World");
    console.log(output1); // "Hello World"
    
    let output2 = identity<number>(42);
    console.log(output2); // 42
    

    여기서 identity 함수를 호출할 때 문자열과 숫자 두 가지 서로 다른 타입을 전달하고 있습니다. 각 경우에 맞춰 적절한 타입이 추론되어 실행됩니다.

  2. 다양한 데이터 구조 다루기

    제네릭은 배열이나 객체 등 복잡한 데이터 구조에도 적용될 수 있습니다.

    function logArray<T>(items: T[]): void {
        items.forEach(item => console.log(item));
    }
    
    logArray<number>([1, 2, 3]); // 1 2 3
    logArray<string>(["a", "b", "c"]); // a b c
    

    위 코드는 배열을 받아 각 요소를 로그로 출력하는 제네릭 함수를 보여줍니다. 이를 통해 다양한 유형의 배열을 처리할 수 있습니다.

여러 형식 매개변수 사용하기

하나 이상의 형식 매개변수가 필요할 때도 가능합니다:

function pair<U, V>(first: U, second: V): [U, V] {
    return [first, second];
}

const mixedPair = pair<number, string>(1, "one"); 
console.log(mixedPair); // [1,"one"]

이 예시는 두 개의 서로 다른 유형을 가진 값을 쌍으로 묶어 반환하는 방법을 보여줍니다.

결론

제네릭 함수는 TypeScript에서 코드 재사용성과 유연성을 높이는 데 큰 역할을 합니다. 다양한 데이터 유형을 처리해야 할 때 특히 유용하며 명확하고 안전하게 코드를 작성하는 데 기여합니다. 위에서 설명된 방식으로 제네릭 기능들을 활용하면 더욱 강력하고 효율적인 TypeScript 코드를 작성할 수 있을 것입니다.

Subscribe to shimdh.log

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe