Array.isArray separates a single value from a list before list operations run.

Array Guard

array_guard.ts
function summarizeTags(tags: string | string[]): string {
    if (Array.isArray(tags)) {
        return `many:${tags.join("+")}`;
    }
    return `one:${tags}`;
}

const multiple: boolean = ;
const tags: string | string[] = multiple ? ["trace", "replay"] : "trace";
const summary: string = summarizeTags(tags);

console.log(summary);
function summarizeTags(tags: string | string[]): string {
    if (Array.isArray(tags)) {
        return `many:${tags.join("+")}`;
    }
    return `one:${tags}`;
}

const multiple: boolean = ;
const tags: string | string[] = multiple ? ["trace", "replay"] : "trace";
const summary: string = summarizeTags(tags);

console.log(summary);
array guard `Array.isArray(value)` narrows a union to an array so methods such as `join` are available.