问题 #
type case1 = Join<['a', 'p', 'p', 'l', 'e'], '-'> // 'a-p-p-l-e'
type case2 = Join<['Hello', 'World'], ' '> // 'Hello World'
type case3 = Join<['2', '2', '2'], 1> // '21212'
type case4 = Join<['o'], 'u'> // 'o'
解答 #
type Join<T, U extends string | number> =
T extends [infer F, ...infer R]
? R extends []
? F
: F extends string | number
? `${F}${U}${Join<R, U>}`
: ''
: ''
拆分 #
- 拆分数组
- 递归拼接