diff options
Diffstat (limited to 'packages/backend/src/misc/prelude/maybe.ts')
| -rw-r--r-- | packages/backend/src/misc/prelude/maybe.ts | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/packages/backend/src/misc/prelude/maybe.ts b/packages/backend/src/misc/prelude/maybe.ts new file mode 100644 index 0000000000..df7c4ed52a --- /dev/null +++ b/packages/backend/src/misc/prelude/maybe.ts @@ -0,0 +1,20 @@ +export interface IMaybe<T> { + isJust(): this is IJust<T>; +} + +export interface IJust<T> extends IMaybe<T> { + get(): T; +} + +export function just<T>(value: T): IJust<T> { + return { + isJust: () => true, + get: () => value, + }; +} + +export function nothing<T>(): IMaybe<T> { + return { + isJust: () => false, + }; +} |