🐨 Adds result types - Result, Error & Ok

This commit is contained in:
Rune Harlyk
2024-02-22 23:03:30 +01:00
parent e418bc2bfd
commit 1536fe1c50
5 changed files with 95 additions and 22 deletions
+36
View File
@@ -0,0 +1,36 @@
export class Err<T> {
#inner: T
constructor(inner: T) {
this.#inner = inner
}
get inner(): T {
return this.#inner
}
/**
* Type guard for `Ok`
* @returns `true` if `Ok`; `false` if `Err`
*/
isOk(): false {
return false
}
/**
* Type guard for `Err`
* @returns `true` if `Err`; `false` if `Ok`
*/
isErr(): this is Err<T> {
return true
}
/**
* Create an `Err`
* @param inner
* @returns `Err(inner)`
*/
static new<E>(inner: E): Err<E> {
return new Err<E>(inner)
}
}