typescriptgenerics
TypeScript 제네릭 심화 - 제약 조건과 고급 패턴
조회 0
TypeScript 제네릭은 타입을 파라미터화하여 재사용 가능한 타입과 함수를 만들 수 있게 해줍니다.
이 글에서는 제네릭 제약 조건, 조건부 타입과의 조합, 실무 패턴을 정리합니다.
1. 기본 제네릭
function identity<T>(arg: T): T {
return arg;
}
const str = identity<string>("hello");
const num = identity<number>(42);
<T>로 타입 파라미터를 정의합니다.- 타입 추론이 가능하면 타입 인자를 생략할 수 있습니다.
2. 제네릭 제약 조건
interface HasLength {
length: number;
}
function logLength<T extends HasLength>(arg: T): T {
console.log(arg.length);
return arg;
}
logLength("hello"); // ✅ OK
logLength([1, 2, 3]); // ✅ OK
logLength(42); // ❌ 에러
extends로 제네릭 타입에 제약을 걸 수 있습니다.
3. 여러 타입 파라미터
function map<T, U>(
array: T[],
fn: (item: T) => U
): U[] {
return array.map(fn);
}
const numbers = [, , ];
strings = (numbers, n.());