반응형
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]를 반환한다
끝!
반응형
'✍ 공부 > TypeScript' 카테고리의 다른 글
[type-challenges] Exclude (0) | 2023.05.23 |
---|---|
[type-challenges] Length of Tuple (0) | 2023.05.23 |
[type-challenges] Tuple to Object (0) | 2023.05.16 |
[type-challenges] Readonly (0) | 2023.05.16 |
[type-challenges] Pick (1) | 2023.05.16 |