이 글은 제가 타입챌린지를 하면서 해석한 내용을 적는 글입니다. 틀린 내용이 있으면 댓글 달아주시면 감사하겠습니다.
https://github.com/type-challenges/type-challenges/blob/main/questions/00016-medium-pop/README.md
그냥 배열에서 마지막 원소를 제외한 배열을 리턴하는 타입을 만들면 되는 문제이다.
type Pop<T extends any[]> = T extends [...infer O, infer L] ? O : T;
/* _____________ Test Cases _____________ */
import type { Equal, Expect } from '@type-challenges/utils'
type cases = [
Expect<Equal<Pop<[3, 2, 1]>, [3, 2]>>,
Expect<Equal<Pop<['a', 'b', 'c', 'd']>, ['a', 'b', 'c']>>,
Expect<Equal<Pop<[]>, []>>,
]
T extends [...infer O, infer L] ? O : T; : T를 마지막원소 L과 나머지 원소를 담은 배열 O로 나누고, 배열 O를 리턴한다. 아니라면 T를 그대로 리턴한다.
위처럼 만들 수도 있고
T extends [...infer O, infer L] ? O : []; 이렇게도 만들 수 있다.
생각보다 간단하다!
'Language > Typescript' 카테고리의 다른 글
타입챌린지 : 62-Type Lookup (0) | 2023.03.24 |
---|---|
타입챌린지 : 20-Promise.all (0) | 2023.03.24 |
타입챌린지 : 15-Last of Array (medium) (0) | 2023.03.22 |
타입챌린지 : 12-Chainable Options (medium) (0) | 2023.03.21 |
타입챌린지 : 10-Tuple To Union (medium) (0) | 2023.03.18 |