✍ 공부/TypeScript
[type-challenges] PickByType
Po_tta_tt0
2023. 7. 25. 20:19
반응형
문제
U에서 T 유형을 가진 속성들의 집합을 꺼냅니다
설명
/* _____________ Your Code Here _____________ */
type PickByType<T, U> = {[K in keyof T as T[K] extends U ? K: never]:T[K]}
type t = PickByType<Model, boolean>
/* _____________ Test Cases _____________ */
import type { Equal, Expect } from '@type-challenges/utils'
interface Model {
name: string
count: number
isReadonly: boolean
isEnable: boolean
}
type cases = [
Expect<Equal<PickByType<Model, boolean>, { isReadonly: boolean; isEnable: boolean }>>,
Expect<Equal<PickByType<Model, string>, { name: string }>>,
Expect<Equal<PickByType<Model, number>, { count: number }>>,
]
집중해야 할 점은 as다
K in keyof T
T의 key를 K로 보고as T[K] extends U
위의 value가 U를 extends하면?? K를 출력하고 아니면 never- 예전에 했던 것 같은데, 객체에서 key를 never로 두면 절대! 오면! 안돼!! 라는 표현이다
반응형