TypeScript·
3 - Omit
- #Type Challenges
- #TypeScript
질문
T에서 K 프로퍼티만 제거해 새로운 오브젝트 타입을 만드는 내장 제네릭 Omit<T, K>를 이를 사용하지 않고 구현하세요.
예시:
1interface Todo {2title: string3description: string4completed: boolean5}67type TodoPreview = MyOmit<Todo, 'description' | 'title'>89const todo: TodoPreview = {10completed: false,11}121343title: string44}4546interface Expected3 {47readonly title: string48}
선행 지식
-
readonly의 보존TypeScript의
Mapped Type은 원본 프로퍼티의 를 자동으로 복사해줄 때가 있는데 원본 타입의 키를 그대로 기반으로 순회할 때 안정적으로 복사해준다. 만약Exclude<keyof T, K>처럼 유니온을 한 번 가공한 결과로 순회할 경우 modifier의 복사가 깨질 수 있다. -
키 재매핑
as타입 단언의
as와 다른 문법으로,Mapped Type에서 키를 다시 매핑하고 싶을 때 사용된다.1{ [P in Keys as NewKey]: Value }