반응형
문제
String을 Union type으로 변환하시오.
output은 input으로 받은 string letters의 유니온 타입이어야 합니다
설명
/* _____________ Your Code Here _____________ */
type StringToUnion<T extends string,P extends any[] = [] > = T extends `${infer A}${infer B}` ? StringToUnion<B,[...P,A]> :P[number]
/* _____________ Test Cases _____________ */
import type { Equal, Expect } from '@type-challenges/utils'
type t = StringToUnion<'hello'>
type cases = [
Expect<Equal<StringToUnion<''>, never>>,
Expect<Equal<StringToUnion<'t'>, 't'>>,
Expect<Equal<StringToUnion<'hello'>, 'h' | 'e' | 'l' | 'l' | 'o'>>,
Expect<Equal<StringToUnion<'coronavirus'>, 'c' | 'o' | 'r' | 'o' | 'n' | 'a' | 'v' | 'i' | 'r' | 'u' | 's'>>,
]
우와~~ 제가 해냈어요!!
접근 방식은 다음과 같습니다
- union으로 만드는 방법은 배열을 도는 방법이라고 생각했어요
- 따라서 string을 배열로 만들고, 그
배열[number]
을 통해 union으로 만들고자 했습니다
반응형
'✍ 공부 > TypeScript' 카테고리의 다른 글
A = [{ a:string, b:string}]와 type B = { a:string, b:string}[]의 차이가 뭘까요? (0) | 2023.07.01 |
---|---|
[type-challenges] Merge (0) | 2023.06.27 |
[type-challenges] Absolute (0) | 2023.06.27 |
[type-challenges] Append to object (0) | 2023.06.27 |
[type-challenges] Flatten (0) | 2023.06.26 |