improve typing

This commit is contained in:
Rowan 2025-10-21 18:30:49 -04:00
parent 7382131674
commit 7e8bdd9ef3
6 changed files with 107 additions and 78 deletions

View file

@ -5,6 +5,9 @@ import { implementor } from './specification/index.js'
import { Alt, Applicative, Chain, Filterable, Functor, Ord, Setoid } from './specification/structures.js' import { Alt, Applicative, Chain, Filterable, Functor, Ord, Setoid } from './specification/structures.js'
import { FantasyLand } from './specification/fantasy-land.js' import { FantasyLand } from './specification/fantasy-land.js'
/**
* @template T
*/
export class Option { export class Option {
/** /**
* @template T * @template T
@ -74,6 +77,20 @@ export class Option {
static lte(other, self) { static lte(other, self) {
return self.lte(other) return self.lte(other)
} }
/**
* @returns {this is Some<T>}
*/
isSome() {
return this instanceof Some
}
/**
* @returns {this is None<T>}
*/
isNone() {
return this == None || this instanceof _None
}
} }
/** @template T */ /** @template T */

View file

@ -5,6 +5,9 @@ import { FantasyLand } from './specification/fantasy-land.js'
import { UnwrapError } from './error.js' import { UnwrapError } from './error.js'
import { Option, None } from './option.js' import { Option, None } from './option.js'
/**
* @template T, E
*/
export class Result { export class Result {
/** /**
* @template T * @template T
@ -42,9 +45,23 @@ export class Result {
static lte(other, self) { static lte(other, self) {
return self.lte(other) return self.lte(other)
} }
/**
* @returns {this is Ok<T, E>}
*/
isOk() {
return this instanceof Ok
}
/**
* @returns {this is Err<T, E>}
*/
isErr() {
return this instanceof Err
}
} }
/** @template T */ /** @template T, E */
export class Ok extends Result { export class Ok extends Result {
/** @type T */ /** @type T */
#value #value
@ -56,21 +73,20 @@ export class Ok extends Result {
} }
/** /**
* @returns {bool} * @returns {this is Ok<T, E>}
*/ */
isOk() { isOk() {
return true return true
} }
/** /**
* @returns {bool} * @returns {this is Err<T, E>}
*/ */
isErr() { isErr() {
return false return false
} }
/** /**
* @template E
* @template {Result<T, E>} R * @template {Result<T, E>} R
* @param {(value: T) => R} fn * @param {(value: T) => R} fn
* @returns {R} * @returns {R}
@ -80,7 +96,7 @@ export class Ok extends Result {
} }
/** /**
* @template V, E * @template V
* @template {Result<V, E>} R * @template {Result<V, E>} R
* @param {(value: T) => V} fn * @param {(value: T) => V} fn
* @returns {R} * @returns {R}
@ -110,7 +126,6 @@ export class Ok extends Result {
} }
/** /**
* @template E
* @param {Result<T, E>} other * @param {Result<T, E>} other
* @returns {Result<T, E>} * @returns {Result<T, E>}
*/ */
@ -119,7 +134,6 @@ export class Ok extends Result {
} }
/** /**
* @template E
* @param {Result<T, E>} other * @param {Result<T, E>} other
* @returns {Result<T, E>} * @returns {Result<T, E>}
*/ */
@ -128,7 +142,7 @@ export class Ok extends Result {
} }
/** /**
* @template E, F * @template F
* @param {(error: E) => Result<T, F>} other * @param {(error: E) => Result<T, F>} other
* @returns {Result<T, F>} * @returns {Result<T, F>}
*/ */
@ -137,7 +151,6 @@ export class Ok extends Result {
} }
/** /**
* @template E
* @param {Result<T, E>} other * @param {Result<T, E>} other
* @returns {bool} * @returns {bool}
*/ */
@ -146,7 +159,6 @@ export class Ok extends Result {
} }
/** /**
* @template E
* @param {Result<T, E>} other * @param {Result<T, E>} other
* @returns {bool} * @returns {bool}
*/ */
@ -165,7 +177,6 @@ export class Ok extends Result {
} }
/** /**
* @template E
* @template {Result<T, E>} R * @template {Result<T, E>} R
* @returns {R} * @returns {R}
*/ */
@ -238,7 +249,7 @@ export class Ok extends Result {
} }
} }
/** @template E */ /** @template T, E */
export class Err extends Result { export class Err extends Result {
/** @type E */ /** @type E */
#error #error
@ -250,14 +261,14 @@ export class Err extends Result {
} }
/** /**
* @returns {bool} * @returns {this is Ok<T, E>}
*/ */
isOk() { isOk() {
return false return false
} }
/** /**
* @returns {bool} * @returns {this is Err<T, E>}
*/ */
isErr() { isErr() {
return true return true

34
types/option.d.ts vendored
View file

@ -1,10 +1,13 @@
export class Option { /**
* @template T
*/
export class Option<T> {
/** /**
* @template T * @template T
* @param {T} value * @param {T} value
* @returns {Some<T>} * @returns {Some<T>}
*/ */
static some<T>(value: T): Some<T>; static some<T_1>(value: T_1): Some<T_1>;
/** @returns {None} */ /** @returns {None} */
static none(): _None; static none(): _None;
/** /**
@ -44,19 +47,19 @@ export class Option {
* @returns {Option<T>} * @returns {Option<T>}
*/ */
static lte(other: Option<T>, self: Option<T>): Option<T>; static lte(other: Option<T>, self: Option<T>): Option<T>;
}
/** @template T */
export class Some<T> extends Option {
/** @param {T} value */
constructor(value: T);
/** /**
* @returns {this is Some} * @returns {this is Some<T>}
*/ */
isSome(): this is Some<any>; isSome(): this is Some<T>;
/** /**
* @returns {this is _None} * @returns {this is None<T>}
*/ */
isNone(): this is _None; isNone(): this is _None;
}
/** @template T */
export class Some<T> extends Option<any> {
/** @param {T} value */
constructor(value: T);
/** /**
* @param {(value: T) => Option<T>} fn * @param {(value: T) => Option<T>} fn
* @returns {Option<T>} * @returns {Option<T>}
@ -160,15 +163,8 @@ export class Some<T> extends Option {
#private; #private;
} }
export const None: _None; export const None: _None;
declare class _None extends Option { declare class _None extends Option<any> {
/** constructor();
* @returns {this is Some}
*/
isSome(): this is Some<any>;
/**
* @returns {this is _None}
*/
isNone(): this is _None;
/** /**
* @template T * @template T
* @param {Option<T>} _other * @param {Option<T>} _other

View file

@ -1 +1 @@
{"version":3,"file":"option.d.ts","sourceRoot":"","sources":["../src/option.js"],"names":[],"mappings":"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"} {"version":3,"file":"option.d.ts","sourceRoot":"","sources":["../src/option.js"],"names":[],"mappings":"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"}

87
types/result.d.ts vendored
View file

@ -1,46 +1,56 @@
export class Result { /**
* @template T, E
*/
export class Result<T, E> {
/** /**
* @template T * @template T
* @param {T} value * @param {T} value
*/ */
static ok<T>(value: T): Ok<T>; static ok<T_1>(value: T_1): Ok<T_1, any>;
/** /**
* @template E * @template E
* @param {E} error * @param {E} error
*/ */
static err<E>(error: E): Err<any>; static err<E_1>(error: E_1): Err<any, any>;
static chain(fn: any, self: any): any; static chain(fn: any, self: any): any;
static map(fn: any, self: any): any; static map(fn: any, self: any): any;
static alt(other: any, self: any): any; static alt(other: any, self: any): any;
static equals(other: any, self: any): any; static equals(other: any, self: any): any;
static lte(other: any, self: any): any; static lte(other: any, self: any): any;
/**
* @returns {this is Ok<T, E>}
*/
isOk(): this is Ok<T, E>;
/**
* @returns {this is Err<T, E>}
*/
isErr(): this is Err<T, E>;
} }
/** @template T */ /** @template T, E */
export class Ok<T> extends Result { export class Ok<T, E> extends Result<any, any> {
/** @param {T} value */ /** @param {T} value */
constructor(value: T); constructor(value: T);
/** /**
* @returns {bool} * @returns {this is Ok<T, E>}
*/ */
isOk(): bool; isOk(): this is Ok<T, E>;
/** /**
* @returns {bool} * @returns {this is Err<T, E>}
*/ */
isErr(): bool; isErr(): this is Err<T, E>;
/** /**
* @template E
* @template {Result<T, E>} R * @template {Result<T, E>} R
* @param {(value: T) => R} fn * @param {(value: T) => R} fn
* @returns {R} * @returns {R}
*/ */
andThen<E, R extends Result<T, E>>(fn: (value: T) => R): R; andThen<R extends Result<T, E>>(fn: (value: T) => R): R;
/** /**
* @template V, E * @template V
* @template {Result<V, E>} R * @template {Result<V, E>} R
* @param {(value: T) => V} fn * @param {(value: T) => V} fn
* @returns {R} * @returns {R}
*/ */
map<V, E, R extends Result<V, E>>(fn: (value: T) => V): R; map<V, R extends Result<V, E>>(fn: (value: T) => V): R;
/** /**
* @template V * @template V
* @param {V} _defaultValue * @param {V} _defaultValue
@ -49,35 +59,31 @@ export class Ok<T> extends Result {
*/ */
mapOr<V>(_defaultValue: V, fn: (value: T) => V): V; mapOr<V>(_defaultValue: V, fn: (value: T) => V): V;
/** /**
* @template E
* @param {Result<T, E>} other * @param {Result<T, E>} other
* @returns {Result<T, E>} * @returns {Result<T, E>}
*/ */
and<E>(other: Result<T, E>): Result<T, E>; and(other: Result<T, E>): Result<T, E>;
/** /**
* @template E
* @param {Result<T, E>} other * @param {Result<T, E>} other
* @returns {Result<T, E>} * @returns {Result<T, E>}
*/ */
or<E>(_other: any): Result<T, E>; or(_other: any): Result<T, E>;
/** /**
* @template E, F * @template F
* @param {(error: E) => Result<T, F>} other * @param {(error: E) => Result<T, F>} other
* @returns {Result<T, F>} * @returns {Result<T, F>}
*/ */
orElse<E, F>(_fn: any): Result<T, F>; orElse<F>(_fn: any): Result<T, F>;
/** /**
* @template E
* @param {Result<T, E>} other * @param {Result<T, E>} other
* @returns {bool} * @returns {bool}
*/ */
equals<E>(other: Result<T, E>): bool; equals(other: Result<T, E>): bool;
/** /**
* @template E
* @param {Result<T, E>} other * @param {Result<T, E>} other
* @returns {bool} * @returns {bool}
*/ */
lte<E>(other: Result<T, E>): bool; lte(other: Result<T, E>): bool;
/** /**
* @template [V=T] * @template [V=T]
* @param {(acc: V, value: T) => V} reducer * @param {(acc: V, value: T) => V} reducer
@ -86,11 +92,10 @@ export class Ok<T> extends Result {
*/ */
reduce<V = T>(reducer: (acc: V, value: T) => V, init: V): V; reduce<V = T>(reducer: (acc: V, value: T) => V, init: V): V;
/** /**
* @template E
* @template {Result<T, E>} R * @template {Result<T, E>} R
* @returns {R} * @returns {R}
*/ */
flatten<E, R extends Result<T, E>>(): R; flatten<R extends Result<T, E>>(): R;
/** /**
* @returns {Option<T>} * @returns {Option<T>}
*/ */
@ -126,25 +131,25 @@ export class Ok<T> extends Result {
unwrapOrElse(_fn: () => T): T; unwrapOrElse(_fn: () => T): T;
#private; #private;
} }
/** @template E */ /** @template T, E */
export class Err<E> extends Result { export class Err<T, E> extends Result<any, any> {
/** @param {E} value */ /** @param {E} value */
constructor(error: any); constructor(error: any);
/** /**
* @returns {bool} * @returns {this is Ok<T, E>}
*/ */
isOk(): bool; isOk(): this is Ok<T, E>;
/** /**
* @returns {bool} * @returns {this is Err<T, E>}
*/ */
isErr(): bool; isErr(): this is Err<T, E>;
/** /**
* @template T * @template T
* @template {Result<T, E>} R * @template {Result<T, E>} R
* @param {(value: T) => R} fn * @param {(value: T) => R} fn
* @returns {R} * @returns {R}
*/ */
andThen<T, R extends Result<T, E>>(_fn: any): R; andThen<T_1, R extends Result<T, E>>(_fn: any): R;
/** /**
* @template V, E * @template V, E
* @template {Result<V, E>} R * @template {Result<V, E>} R
@ -171,31 +176,31 @@ export class Err<E> extends Result {
* @param {Result<T, E>} _other * @param {Result<T, E>} _other
* @returns {Result<T, E>} * @returns {Result<T, E>}
*/ */
and<T>(_other: Result<T, E>): Result<T, E>; and<T_1>(_other: Result<T_1, E>): Result<T_1, E>;
/** /**
* @template T * @template T
* @param {Result<T, E>} other * @param {Result<T, E>} other
* @returns {Result<T, E>} * @returns {Result<T, E>}
*/ */
or<T>(other: Result<T, E>): Result<T, E>; or<T_1>(other: Result<T_1, E>): Result<T_1, E>;
/** /**
* @template T, F * @template T, F
* @param {(error: E) => Result<T, F>} other * @param {(error: E) => Result<T, F>} other
* @returns {Result<T, F>} * @returns {Result<T, F>}
*/ */
orElse<T, F>(fn: any): Result<T, F>; orElse<T_1, F>(fn: any): Result<T_1, F>;
/** /**
* @template T * @template T
* @param {Result<T, E>} other * @param {Result<T, E>} other
* @returns {bool} * @returns {bool}
*/ */
equals<T>(other: Result<T, E>): bool; equals<T_1>(other: Result<T_1, E>): bool;
/** /**
* @template T * @template T
* @param {Result<T, E>} other * @param {Result<T, E>} other
* @returns {bool} * @returns {bool}
*/ */
lte<T>(other: Result<T, E>): bool; lte<T_1>(other: Result<T_1, E>): bool;
/** /**
* @template [V=T] * @template [V=T]
* @param {(acc: V, value: T) => V} _reducer * @param {(acc: V, value: T) => V} _reducer
@ -208,7 +213,7 @@ export class Err<E> extends Result {
* @template {Result<T, E>} R * @template {Result<T, E>} R
* @returns {R} * @returns {R}
*/ */
flatten<T, R extends Result<T, E>>(): R; flatten<T_1, R extends Result<T, E>>(): R;
/** /**
* @returns {Option<T>} * @returns {Option<T>}
*/ */
@ -222,13 +227,13 @@ export class Err<E> extends Result {
* @param {(value: T) => void} _fn * @param {(value: T) => void} _fn
* @returns {this} * @returns {this}
*/ */
inspect<T>(_fn: (value: T) => void): this; inspect<T_1>(_fn: (value: T_1) => void): this;
/** /**
* @template T * @template T
* @returns {T} * @returns {T}
* @throws {UnwrapError} * @throws {UnwrapError}
*/ */
unwrap<T>(): T; unwrap<T_1>(): T_1;
/** /**
* @returns {E} * @returns {E}
* @throws {UnwrapError} * @throws {UnwrapError}
@ -244,7 +249,7 @@ export class Err<E> extends Result {
* @param {() => T} fn * @param {() => T} fn
* @returns {T} * @returns {T}
*/ */
unwrapOrElse<T>(fn: () => T): T; unwrapOrElse<T_1>(fn: () => T_1): T_1;
#private; #private;
} }
import { Option } from './option.js'; import { Option } from './option.js';

View file

@ -1 +1 @@
{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../src/result.js"],"names":[],"mappings":"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"} {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../src/result.js"],"names":[],"mappings":"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"}