A report summary can group rows, count statuses, and print a compact result.

Report Summary Case

report.ts
type Row = {
    status: "pass" | "fail";
};

type Summary = {
    pass: number;
    fail: number;
};

function summarize(rows: Row[]): Summary {
    const summary: Summary = { pass: 0, fail: 0 };

    for (const row of rows) {
        summary[row.status] += 1;
    }

    return summary;
}

const includeFailure: boolean = ;
const rows: Row[] = [
    { status: "pass" },
    { status: includeFailure ? "fail" : "pass" },
    { status: "pass" }
];
const summary: Summary = summarize(rows);

console.log(`pass=${summary.pass};fail=${summary.fail}`);
type Row = {
    status: "pass" | "fail";
};

type Summary = {
    pass: number;
    fail: number;
};

function summarize(rows: Row[]): Summary {
    const summary: Summary = { pass: 0, fail: 0 };

    for (const row of rows) {
        summary[row.status] += 1;
    }

    return summary;
}

const includeFailure: boolean = ;
const rows: Row[] = [
    { status: "pass" },
    { status: includeFailure ? "fail" : "pass" },
    { status: "pass" }
];
const summary: Summary = summarize(rows);

console.log(`pass=${summary.pass};fail=${summary.fail}`);
summary case Accumulating into a typed summary object is a common pattern for scripts and small services.