logoProsperBao

Join

2022-04-25 09

题目来源(type-challenges)

问题

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>}`
      : ''
  : ''

拆分

  1. 拆分数组
  2. 递归拼接