type Result = { ok: true; value: T } | { ok: false; error: string }; function isOk(r: Result): r is { ok: true; value: T } { return r.ok; } if (isOk(result)) { console.log(result.value); // narrowed }