import type { IgnoreMutability } from './ignore-mutability'; import type { Stringifiable } from './stringifiable'; /** * Joins an array of strings into a single string, separated by a delimiter. * * @example * ``` * Join<['apple', 'banana', 'plum'], ' & '> // 'apple & banana & plum' * ``` * @example * ``` * Join<['a', 'b', 'c']> // 'abc' * ``` */ export type Join = IgnoreMutability extends T ? JoinReadonly : JoinMutable<[...T], D, Acc>; type JoinMutable = T extends [ infer Head extends Stringifiable, ...infer Tail extends Stringifiable[] ] ? Join : Acc; type JoinReadonly = T extends readonly [ infer Head extends Stringifiable, ...infer Tail extends readonly Stringifiable[] ] ? Join : Acc; export {};