type Join<S extends readonly string[], D extends string, F extends boolean = true> = S extends readonly [
    infer A extends string,
    ...infer B extends string[]
] ? `${F extends true ? "" : A extends "" ? "" : D}${A}${B["length"] extends 0 ? "" : Join<B, D, false>}` : never;

export type { Join };
