✍ 공부/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]를 반환한다

끝!

 

 

 

반응형