loop-controls
Version:
break/continue controls for loops and higher-order functions (sync, async, concurrent). Designed to compose with ts-pattern.
18 lines (15 loc) • 474 B
text/typescript
export class _Break<T = unknown> extends Error {
readonly value?: T;
constructor(value?: T) { super("BREAK"); this.value = value; }
}
export class _Continue extends Error {
constructor() { super("CONTINUE"); }
}
export type Control = {
break: <T = unknown>(value?: T) => never;
continue: () => never;
};
export const $control: Control = {
break: (value?: unknown): never => { throw new _Break(value); },
continue: (): never => { throw new _Continue(); },
};