프로그래밍/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; }
그래서 이런 식으로도 활용이 가능하다.
반응형