summaryrefslogtreecommitdiff
path: root/src/prelude
diff options
context:
space:
mode:
authorAya Morisawa <AyaMorisawa4869@gmail.com>2019-02-06 13:42:35 +0900
committerGitHub <noreply@github.com>2019-02-06 13:42:35 +0900
commite9955e01d60773b96017acc1c6cd3dfae4dfb3e6 (patch)
treed05fedd7da43317990f688ee909fff8923c34118 /src/prelude
parentAdd URL validation (#4148) (diff)
downloadsharkey-e9955e01d60773b96017acc1c6cd3dfae4dfb3e6.tar.gz
sharkey-e9955e01d60773b96017acc1c6cd3dfae4dfb3e6.tar.bz2
sharkey-e9955e01d60773b96017acc1c6cd3dfae4dfb3e6.zip
Introduce option type (#4150)
* Introduce option type * Improve test naming
Diffstat (limited to 'src/prelude')
-rw-r--r--src/prelude/maybe.ts20
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,
+ };
+}