invariant もしくは tiny-invariant パッケージを知っていますか?
これらは1週間に2,000万回ダウンロードされる、超人気パッケージです。
invariant とは
直訳すると「不変なもの」という意味ですが、わかりづらいので tiny-invariant に含まれるコードを見てみましょう。
これが tiny-invariant のほぼ全てです。(正確には tiny-invariant.ts が本体)
また、 invariant パッケージもほぼ同じです。
これを読んで何をしているかわからない人はほとんどいないと思いますが、 invariant 関数の第一引数がtruthyであれば何もせず、falsyであればエラーになります。
assert関数とほぼ同じです。
assert との差
assert は主にデバッグ環境のみで利用されると思います。
一方で、 invariant は環境によらず契約を記述するための関数として利用されているようです。
もちろん関数の使い方は自由なので違う用途、思想で利用されているかもしれません。
おわり
invariant もしくは tiny-invariant というNPMパッケージの紹介でした。
コメントも含めて50行ほど (tiny-invariant.ts) のパッケージが1週間に2,000万回ダウンロードというのは少し不思議ですね。
オープンソースかつ、枯れている(という表現が正しいかはさておき)のでほぼ同じ実装を手元に置けば良い気もします。
OSSの世界は深いですね。