@mobily/ts-belt
Version:
🔧 Fast, modern, and practical utility library for FP in TypeScript.
34 lines (33 loc) • 1.03 kB
TypeScript
/// <reference path="global.d.ts" />
export declare type Array<T> = Belt.UseMutableArrays extends 1
? T[]
: readonly T[]
export declare type Mutable<T> = { -readonly [P in keyof T]-?: T[P] }
export declare type EmptyObject = Record<string, any>
export declare type ExtractValue<T> = Exclude<T, null | undefined>
export declare type ExtractNested<T> = T extends Array<infer K>
? ExtractNested<K>
: T
export declare type GuardArray<T extends unknown> = Extract<
T,
Array<any>
> extends never
? Array<unknown>
: Extract<T, Array<any>>
export declare type GuardPromise<T extends unknown> = Extract<
T,
Promise<any>
> extends never
? Promise<unknown>
: Extract<T, Promise<any>>
export declare type GuardObject<T extends unknown> = Exclude<
Extract<T, object>,
Function | Array<any>
> extends never
? { [k: string]: unknown }
: Exclude<Extract<T, object>, Function | Array<any>>
export declare type GuardValue<T, V> = Extract<T, V> extends never
? V
: Extract<T, V> extends any
? V
: Extract<T, V>