9、重学TS-第九题

59 阅读1分钟

定义一个 JoinStrArray 工具类型,用于根据指定的 Separator 分隔符,对字符串数组类型进行拼接。具体的使用示例如下所示:

type JoinStrArray<Arr extends string[], Separator extends string, Result extends string = ""> = // 你的实现代码

// 测试用例
type Names = ["Sem", "Lolo", "Kaquko"]
type NamesComma = JoinStrArray<Names, ","> // "Sem,Lolo,Kaquko"
type NamesSpace = JoinStrArray<Names, " "> // "Sem Lolo Kaquko"
type NamesStars = JoinStrArray<Names, "⭐️"> // "Sem⭐️Lolo⭐️Kaquko"

解法:

type JoinStrArray<Arr extends string[], Separator extends string, Result extends string = ""> = 
  Arr extends [infer E, ...infer Rest]
    ? E extends string
      ? Result extends ''
        ? JoinStrArray<Rest, Separator, E>
        : JoinStrArray<Rest, Separator, `${Result}${Separator}${E}`>
      : Result
    : Result

这题需要明白,ts可以使用js中的模板语法,并且要使用infer提取出数组中的元素类型