javascript
타입스크립트 제너릭(Generic) / 레코드(Record)
제너릭(Generic)
“사용시에 타입을 지정”
-
함수나 클래스를 만들 때는 타입을 몰라도 되고, 사용할 때 타입을 지정할 수 있음
-
제너릭 함수가 사용된 함수를 볼때는
먼저 파라미터를 보면 이해가 쉬움(*중요)
예시:
function identity<T>(value: T): T {
return value;
}
const num = identity<number>(42); // 숫자
const str = identity<string>("안녕"); // 문자열
<T>가 제너릭이며,T는 사용 시점에 결정되는 타입입니다.
레코드(Record)
-
객체의 키와 값의 타입을 지정할 수 있음
-
키 이름은 제한 가능, 값의 타입은 통일 가능
-
{ 'a': string }처럼 객체의 타입을 지정하는것 대신,Record<키타입, 값타입>형식으로 선언 가능
↓
(내가 항상 습관적으로 객체타입을 {키:값}으로 지정하는데 그것보다 확장성있게 {키타입:값타입}으로 사용할수있다는 말임(*중요)
예시 1: 키가 문자열, 값이 문자열
type PageInfo = Record<string, string>;
const pages: PageInfo = {
home: "홈페이지",
about: "소개 페이지",
};
예시 2: 키 이름 제한
type PageInfoLimited = Record<'home' | 'about' | 'contact', string>;
const pagesLimited: PageInfoLimited = {
home: "홈페이지",
about: "소개 페이지",
contact: "문의 페이지",
// profile: "프로필" // ❌ 에러: 'profile'은 허용되지 않은 키
};
// Record<'home' | 'about' | 'contact', string>는 허용된 키('home' | 'about' | 'contact')만 가질 수 있으며, 값은 모두 문자열이어야 함.