Collection of TypeScript type challenges with online judge
Pick
type MyPick<T, K extends keyof T> = { [k in K]: T[k] }
Readonly
type MyReadonly<T> = { readonly [k in keyof T]: T[k] }
Exclude
type MyExclude<T, U> = T extends U ? never : T
Awaited
type MyAwaited<T> = T extends PromiseLike<infer I> ? I extends PromiseLike<any> ? MyAwaited<I> : I : never
Parameters
type MyParameters<T extends (...args: any[]) => any> = T extends (...arg: infer I) => any ? I : any;
ReturnType
type MyReturnType<T extends (...args: unknown[]) => unknown> = T extends (...arg: unknown[]) => infer I ? I : never;
Omit
type MyOmit<T, K> = { [t in keyof T as t extends K ? never : t]: T[t] }
끝!
타입스크립트 Conditional Types에 익숙해지자
'타입스크립트' 카테고리의 다른 글
타입스크립트의 구조적 타이핑과 잉여속성체크 이해하기 (1) | 2023.11.26 |
---|---|
타입(type)과 인터페이스(interface) 중 어느 것을 사용해야할까요? (1) | 2023.11.23 |