README
Value
The @perfective/value
package provides functions to work with undefined
and null
values
and utility types
(similar to the TS NonNullable<T>
to describe some of such values.
- Utility types:
type Defined<T> = T extends undefined ? never : T
;type Undefined<T> = T extends undefined ? T : never
;type NotNull<T> = T extends null ? never : T
;type Null<T> = T extends null ? T : never
;type Present<T> = T extends null | undefined ? never : T
— same asNonNullable<T>
, but is used in the project for consistency with the type guards;type Absent<T> = T extends null | undefined ? T : never
.
- Type Guards:
isDefined<T>(value: T | undefined): value is T
;isUndefined<T>(value: T | undefined): value is undefined
;isNotNull<T>(value: T | null): value is T
;isNull<T>(value: T | null): value is null
;isPresent<T>(value: T | null | undefined): value is T
;isAbsent<T>(value: T | null | undefined): value is null | undefined
.
typeof
types and functions:EcmaType
— is one ofundefined
,boolean
,number
,bigint
,string
,symbol
,function
, orobject
.TsType
— is one ofEcmaType
ornull
,array
, andunknown
.TypeOf<T>
— a conditional type that returnsTsType
dynamically.typeOf<T>(value: T | null | undefined): TypeOf<T> & TsType
.isTypeOf<T>(type: TypeOf): (value: T | null | undefined) => boolean
;isNotTypeOf<T>(type: TypeOf): (value: T | null | undefined) => boolean
.
- Handling
void
:voidable<T>(value: T | void): T | null | undefined
.
Full documentation is available in the repository.