diff options
| author | Aya Morisawa <AyaMorisawa4869@gmail.com> | 2019-02-06 13:42:35 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-02-06 13:42:35 +0900 |
| commit | e9955e01d60773b96017acc1c6cd3dfae4dfb3e6 (patch) | |
| tree | d05fedd7da43317990f688ee909fff8923c34118 /src | |
| parent | Add URL validation (#4148) (diff) | |
| download | sharkey-e9955e01d60773b96017acc1c6cd3dfae4dfb3e6.tar.gz sharkey-e9955e01d60773b96017acc1c6cd3dfae4dfb3e6.tar.bz2 sharkey-e9955e01d60773b96017acc1c6cd3dfae4dfb3e6.zip | |
Introduce option type (#4150)
* Introduce option type
* Improve test naming
Diffstat (limited to 'src')
| -rw-r--r-- | src/prelude/maybe.ts | 20 |
1 files changed, 20 insertions, 0 deletions
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<T> { + isJust(): this is Just<T>; +} + +export type Just<T> = Maybe<T> & { + get(): T +}; + +export function just<T>(value: T): Just<T> { + return { + isJust: () => true, + get: () => value + }; +} + +export function nothing<T>(): Maybe<T> { + return { + isJust: () => false, + }; +} |