Generic은 타입으로 매개변수화된 재사용 가능한 코드를 작성하게 해줍니다. 코드가 사용될 때 채워지는 "타입 변수"인 셈입니다. 타입 안전성을 잃지 않고 재사용을 제공합니다(대안인 any는 안전성을 잃습니다).
ts
(): { arr[]; }
first<T>(: T[]): T { arr[]; }
n = ([, , ]);
s = ([, ]);
Generic은 타입으로 매개변수화된 재사용 가능한 코드를 작성하게 해줍니다. 코드가 사용될 때 채워지는 "타입 변수"인 셈입니다. 타입 안전성을 잃지 않고 재사용을 제공합니다(대안인 any는 안전성을 잃습니다).
(): { arr[]; }
first<T>(: T[]): T { arr[]; }
n = ([, , ]);
s = ([, ]);
T는 자리표시자입니다. TypeScript는 인자로부터 그것을 **추론(infer)**하므로 반환 타입이 정확합니다. first([1,2])는 any가 아닌 number를 줍니다.
interface ApiResponse<T> { data: T; status: number; }
const res: ApiResponse<User> = await getUser(); // res.data는 User
class Box<T> {
constructor(private value: T) {}
get(): T { return this.value; }
}
const box = new Box(123); // Box<number>
function pair<K, V>(k: K, v: V): [K, V] { return [k, v]; }
pair("id", 42); // [string, number]
Generic은 TypeScript의 거의 모든 재사용 가능한 추상화를 떠받칩니다: Array<T>, Promise<T>, Map<K,V>, React의 useState<T>, 데이터 페칭 유틸리티, 컬렉션 등입니다.
하나의 구현이 여러 타입에 대해 동작하면서도 입력과 출력 타입 사이의 관계를 지우지 않고 전체 타입 정보를 끝까지 보존합니다.
주니어부터 시니어까지 상세한 답변이 포함된 IT 면접 질문 라이브러리.
후원하기