From e9955e01d60773b96017acc1c6cd3dfae4dfb3e6 Mon Sep 17 00:00:00 2001 From: Aya Morisawa Date: Wed, 6 Feb 2019 13:42:35 +0900 Subject: Introduce option type (#4150) * Introduce option type * Improve test naming --- src/prelude/maybe.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/prelude/maybe.ts (limited to 'src/prelude') diff --git a/src/prelude/maybe.ts b/src/prelude/maybe.ts new file mode 100644 index 0000000000..f9ac95c0b5 --- /dev/null +++ b/src/prelude/maybe.ts @@ -0,0 +1,20 @@ +export interface Maybe { + isJust(): this is Just; +} + +export type Just = Maybe & { + get(): T +}; + +export function just(value: T): Just { + return { + isJust: () => true, + get: () => value + }; +} + +export function nothing(): Maybe { + return { + isJust: () => false, + }; +} -- cgit v1.2.3-freya