@lou.codes/predicates is a library of conditional checks (predicates) with
strong typing using type predicates.
There are lots of checks I did in every project (falsy checks, type checks, matches, includes, etc.) so I wanted to have all of them in a single place and this library was born out of that necessity.
This library relies on a type narrowing feature of TypeScript called type predicates. This feature allows to make functions with a shape like this:
Affecting the type narrowing in typescript like this:
I built this library using TypeScript, with configurations from my shared configs. I made it ESM only as soon as Node started supporting ESM modules, and I made it tree-shakeable by using named exports.
Currying is used extensively. For example the util
isType is used by
isNumber to name a few.
isType internally uses
typeof and a dictionary of types, but is a little bit different to using
typeof directly because
"null" instead of
As I mentioned in previous sections, I used to have this checks all over, so when I moved that code here, it turned into a pretty common dependency in my libraries and at work. It is used by cron, iterables, notify, utils, and more.