UNPKG

@mvst/ts-unions

Version:

TypeScript union types for Maybe and RemoteData with pattern matching

58 lines (57 loc) 2.06 kB
export type RemoteData<T> = { type: "Error"; error: Error; } | { type: "Loading"; } | { type: "NotAsked"; } | { type: "Success"; value: T; }; type Pattern<T, TResult> = { _?: () => TResult; error?: (error: Error) => TResult; loading?: () => TResult; notAsked?: () => TResult; success?: (value: T) => TResult; }; declare function notAsked<T>(): RemoteData<T>; declare function loading<T>(): RemoteData<T>; declare function success<T>(value: T): RemoteData<T>; declare function error<T>(error: Error): RemoteData<T>; declare function isSuccess<T>(remoteData: RemoteData<T>): remoteData is { type: "Success"; value: T; }; declare function isError<T>(remoteData: RemoteData<T>): remoteData is { type: "Error"; error: Error; }; declare function isLoading<T>(remoteData: RemoteData<T>): remoteData is { type: "Loading"; }; declare function isNotAsked<T>(remoteData: RemoteData<T>): remoteData is { type: "NotAsked"; }; interface CurryWithDefault { <T>(defaultValue: T, remoteData: RemoteData<T>): T; <T>(defaultValue: T): (remoteData: RemoteData<T>) => T; } declare const withDefault: CurryWithDefault; interface CurriedWhen { <T, TResult>(pattern: Pattern<T, TResult>, remoteData: RemoteData<T>): TResult; <T, TResult>(pattern: Pattern<T, TResult>): (remoteData: RemoteData<T>) => TResult; } declare const when: CurriedWhen; interface CurriedMap { <T, TResult>(fn: (value: T) => TResult, remoteData: RemoteData<T>): RemoteData<TResult>; <T, TResult>(fn: (value: T) => TResult): (remoteData: RemoteData<T>) => RemoteData<TResult>; } declare const map: CurriedMap; interface CurriedAndThen { <T, TResult>(fn: (value: T) => RemoteData<TResult>, remoteData: RemoteData<T>): RemoteData<TResult>; <T, TResult>(fn: (value: T) => RemoteData<TResult>): (remoteData: RemoteData<T>) => RemoteData<TResult>; } declare const andThen: CurriedAndThen; export { andThen, error, isError, isLoading, isNotAsked, isSuccess, loading, map, notAsked, success, when, withDefault, };