Skip to content

Latest commit

 

History

History
37 lines (28 loc) · 1.23 KB

Join.md

File metadata and controls

37 lines (28 loc) · 1.23 KB
标题 标签
Join(数组转字符串) extends,array,string(继承,数组,字符串)

数组转字符串。

  • 使用 infer 推断数组第一项和剩余项,如果剩余项长度为 0,则直接返回第一项组成的字符串,使用&将第一项与 string 求交集即可转成字符串。
  • 否则返回第一项,并插入分隔符,以及递归的推断剩余项。
  • 否则返回 never。

代码如下:

type Join<T extends any[], S extends string | number> = T extends [
  infer F,
  ...infer R
]
  ? R['length'] extends 0
    ? `${F & string}`
    : `${F & string}${S}${Join<R, S>}`
  : never;

使用方式:

type JoinRes = Join<['a', 'p', 'p', 'l', 'e'], '-'>; // expected to be 'a-p-p-l-e'
type JoinRes1 = Join<['Hello', 'World'], ' '>; // expected to be 'Hello World'
type JoinRes2 = Join<['2', '2', '2'], 1>; // expected to be '21212'
type JoinRes3 = Join<['o'], 'u'>; // expected to be 'o'

应用场景

如下所示, 鼠标悬浮到对应的类型变量可以查看类型。