Truthy
Syntax
type Truthy<T>
Attempts to remove all falsy types from another type.
Example
import { Truthy } from 'potence';
type A = Truthy<0 | 1 | '' | 'a'>; // -> 1 | 'a'
type B = Truthy<boolean>; // -> true
type C = Truthy<number>; // -> number (can't narrow non-literal types)
type D = Truthy<unknown>; // -> unknown
type E = Truthy<0 | ''>; // -> never
Remarks
Unlike Falsy<T>, there is no clearly defined
set of “truthy” values. Truthy values are instead all those that are not one
of the known falsy values. As a result, it isn’t possible to exclude all falsy
values from a non-literal type like number. Truthy<number> will simply
evaluate back to number because TypeScript currently has no way to express
all numbers except those assignable to T. This makes this type most useful
with
literal types.
That’s also why the type parameter T is not optional in this case (whereas it
is optional in Falsy<T>).
Click here for more information on “truthiness” as a concept.