type ApiResult = { ok: true; data: string[] } | { ok: false; error: string }; function printResult(result: ApiResult) { if (result.ok) { console.log(result.data.join(', ')); return; } console.error(result.error); } function isError(value: unknown): value is Error { return value instanceof Error; } try { printResult({ ok: true, data: ['a', 'b'] }); } catch (e) { if (isError(e)) console.error(e.message); }