keyof & typeof 연산자

keyof 연산자 (Index Type Query)

typeof 연산자

인덱스드 엑세스 타입

객체 프로퍼티의 타입 추출

배열 요소의 타입 추출

튜플의 요소 타입 추출

맵드 타입 (Mapped Types)

type User = {
  id: number;
  name: string;
  age: number;
};

// 모든 속성을 옵셔널로 변경
type OptionalUser4 = {
    [K in keyof User3]?: User3[K];
}
// 결과: { id?: number; name?: string; age?: number; }

// 모든 속성을 읽기 전용으로 변경
type ReadonlyUser3 = {
    readonly[k in keyof User3]: User3[k];
}
// 결과: { readonly id: number; readonly name: string; readonly age: number; }

템플릿 리터럴 타입 (Template Literal Types)

type Color2 = 'red' | 'green' | 'blue';
type Intensity = 'light' | 'dark';

// 두 유니온 타입이 조합된 새로운 문자열 타입 생성
// 결과: 'light-light' | 'light-dark' | 'dark-light' | 'dark-dark' | 'green-light' | 'green-dark'
type ColorTheme = `${Intensity}-${Color2}`;