Predicate
The Predicate module provides utilities for type-safe predicate functions in TypeScript.
not
Returns a new function that will return the opposite boolean value of the original predicate.
import { not } from 'funkcia/predicate';
const isString = (value: unknown) => typeof value === 'string';
const isNotString = not(isString);
Predicate<A>
Represents a function that tests a value and returns a boolean.
import { Predicate } from 'funkcia/predicate';
const isPositive: Predicate.Predicate<number> = (n) => n > 0;
Guard<A, B extends A>
Represents a type guard function that refines a type A
to a more specific type B
.
import { Predicate } from 'funkcia/predicate';
const isString: Predicate.Guard<unknown, string> = (value) =>
typeof value === 'string';
Guarded<Guard>
Utility type that extracts the refined type B
from a Guard<A, B>
.
import { Predicate } from 'funkcia/predicate';
type StringGuard = Predicate.Guard<unknown, string>;
type Refined = Predicate.Guarded<StringGuard>;
// ^? string
Unguarded<A, B extends A>
Utility type that computes the type that was excluded by the type guard refinement.
import { Predicate } from 'funckia/predicate';
type Shape = Circle | Square | Triangle;
type UnguardedShape = Predicate.Unguarded<Shape, Circle>;
// ^? Square | Triangle
Last updated
Was this helpful?