kakasoo

TypeScript type level에서의 in의 의미 본문

프로그래밍/TypeScript

TypeScript type level에서의 in의 의미

카카수(kakasoo) 2023. 1. 25. 23:12
반응형
interface Person {
    name: string;
    age: number;
}

type Partial<T> = {
    [P in keyof T]?: T[P]; // P will be each key of T
}

type PersonPartial = Partial<Person>; // same as { name?: string;  age?: number; }

in키워드는 키 조합의 모든 항목을 반복하는 구문의 일부로 사용된다.

위에서 Partial type은 key of T 이므로 name, age 프로퍼티들이 될 것이고, 그것이 반복된 키-밸류의 객체 타입을 의미한다.

다만 그 키의 값이 ?: 연산자로 optional 하다고 알려주기 때문에 이름의 의미와 같이, Partial하게 정의된다.

 

type TupleToObject<T extends readonly any[]> = {
    [key in T[number]]: key;
}

const tupleNumber = [1, 2, 3, 4] as const;
type tupleNumberToObject = TupleToObject<tupleNumber>; // same as { 1: 1; 2: 2; 3: 3; 4: 4; }

그래서 이런 식으로도 활용이 가능하다.

반응형