[typescript] 제네릭 타입에서의 타입 추론과 타입 어노테이션 차이

제네릭 타입은 TypeScript의 강력한 기능 중 하나로, 타입 추론타입 어노테이션을 사용하여 변수 또는 함수에 타입 정보를 명시할 수 있습니다. 이를 통해 코드의 가독성과 안정성을 높일 수 있습니다. 이번 블로그에서는 제네릭 타입에서의 타입 추론과 타입 어노테이션의 차이에 대해 살펴보겠습니다.

제네릭 타입과 타입 추론

제네릭 타입은 값을 저장할 때 타입 정보가 유지되도록 도와주는 동적으로 특정 타입(예: 배열, 객체, 함수)을 사용할 수 있도록 하는 TypeScript의 강력한 기능입니다. 제네릭 타입에서 타입 추론은 변수나 함수의 타입을 명시적으로 지정해주지 않을 때, TypeScript 엔진이 자동으로 해당 값을 기반으로 타입을 추론하는 기능을 말합니다.

예를 들어, 다음과 같은 제네릭 함수가 있다고 가정해봅시다.

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

위 함수에서 T는 타입 매개변수이며, arg의 타입을 명시적으로 지정하지 않았습니다. 예를 들어 const result = identity("hello");와 같이 함수를 호출하면 TypeScript 엔진은 "hello"의 타입을 기반으로 result의 타입을 추론합니다.

제네릭 타입과 타입 어노테이션

반면, 타입 추론과는 달리 타입 어노테이션은 변수나 함수에 타입 정보를 명시적으로 지정하는 것을 말합니다. 이를 통해 사용자가 직접 해당 값의 타입을 지정하고자 할 때 사용됩니다.

제네릭 타입에서의 타입 어노테이션은 다음과 같이 사용될 수 있습니다.

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

let myIdentity: <U>(arg: U) => U = identity;

위 예제에서 myIdentity 변수에 타입 어노테이션으로 <U>(arg: U) => U를 할당했습니다. 이를 통해 myIdentity 변수가 identity 함수와 동일한 타입을 가지도록 명시적으로 지정할 수 있습니다.

결론

제네릭 타입에서의 타입 추론과 타입 어노테이션을 사용하여 코드의 가독성과 유지보수성을 높일 수 있습니다. 타입 추론은 TypeScript 엔진이 자동으로 타입을 추론하는 것이며, 타입 어노테이션은 사용자가 직접 타입을 지정하는 것입니다. 올바르게 사용하면서 코드의 안정성과 효율성을 높이는 데 도움이 될 것입니다.

참고 문헌:
TypeScript 공식 문서 - 제네릭 타입