「全て真なら真」と空配列の話

集合論とか難しい話をしなくても高校1年レベルの数学が分かれば納得できる話です。

高校数学で「全ての要素が真ならば真」という命題は「偽の要素が1つもなければ真」という命題に等しいという事を学びます。後者ならallやeveryのような関数に空配列を渡すとtrueが返ることが直感的にわかるのではないでしょうか。

const list = [];

list.every(i => i > 0);  // => true

「負の値が1つも無ければtrue」と考えれば空配列に対してtrueとなるのは直感的にも正しいと感じるのではないでしょうか。

要件次第という意見も見かけました。アプリケーション構築するならそれは正解だと思います。ただ、要件ということはその挙動はドメイン知識であるのでドメイン層やサービス層で実装すべきです。共通ライブラリやUtil関数ならば数学的に正しい挙動にする方が良いでしょう。