반응형
문제
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로 두면 절대! 오면! 안돼!! 라는 표현이다
반응형
'✍ 공부 > TypeScript' 카테고리의 다른 글
[type-challenges] EndsWith (0) | 2023.08.01 |
---|---|
[type-challenges] StartsWith (0) | 2023.07.25 |
[type-challenges] Drop Char (0) | 2023.07.25 |
[type-challenges] IsNever (0) | 2023.07.04 |
[type-challenges] AnyOf< {[key:string]:never}와 {} type은 뭐가 다를까?> (0) | 2023.07.04 |