✍ 공부/TypeScript
[type-challenges] First of Array
Po_tta_tt0
2023. 5. 23. 18:03
반응형
0. 문제
배열(튜플) T를 받아 첫 원소의 타입을 반환하는 제네릭 First<T>
를 구현하세요.
1. 설명
/* _____________ Your Code Here _____________ */
type First<T extends any[]> = T extends [] ? never :T[0]
type Mytype = First<[() => 123, { a: string }]>
type Mytype2 = First<[]>
/* _____________ Test Cases _____________ */
import type { Equal, Expect } from '@type-challenges/utils'
type cases = [
Expect<Equal<First<[3, 2, 1]>, 3>>,
Expect<Equal<First<[() => 123, { a: string }]>, () => 123>>,
Expect<Equal<First<[]>, never>>,
Expect<Equal<First<[undefined]>, undefined>>,
]
type errors = [
// @ts-expect-error
First<'notArray'>,
// @ts-expect-error
First<{ 0: 'arrayLike' }>,
]
type First<T extends any[]> = T extends [] ? never :T[0]
제네릭 타입 First는 배열 T를 받아, T가 []을 extend할 때 : 빈 배열일 때
never을 반환하고
그게 아니면 T[0]를 반환한다
끝!
반응형