✍ 공부/TypeScript
[type-challenges] Concat
Po_tta_tt0
2023. 5. 23. 21:07
반응형
0. 문제
Javascript의 Array.concat 함수를 타입 시스템에서 구현하세요.
1. 설명
/* _____________ Your Code Here _____________ */
type Concat<T extends readonly unknown[], U extends readonly unknown[]> = [...T , ...U]
/* _____________ Test Cases _____________ */
import type { Equal, Expect } from '@type-challenges/utils'
const tuple = [1] as const
type cases = [
Expect<Equal<Concat<[], []>, []>>,
Expect<Equal<Concat<[], [1]>, [1]>>,
Expect<Equal<Concat<typeof tuple, typeof tuple>, [1, 1]>>,
Expect<Equal<Concat<[1, 2], [3, 4]>, [1, 2, 3, 4]>>,
Expect<Equal<Concat<['1', 2, '3'], [false, boolean, '4']>, ['1', 2, '3', false, boolean, '4']>>,
]
// @ts-expect-error
type error = Concat<null, undefined>
type Concat<T extends readonly unknown[], U extends readonly unknown[]> = [...T , ...U]
이와같이 T와 U Array<??>를 스프레드 연산으로 풀어주고,
T와 U는 readonly unknown[]을 extend해준다 : readonly가 들어가는 이유는 cases 3을 해결하기 위함
반응형