es-toolkit/compat
es-toolkit/compatは、Lodashと同じインターフェースと動作を提供するモジュールです。Lodashを使っている既存のコードをそのままにしたまま、少しずつes-toolkitへ移行できるように作られています。
既存のプロジェクトでLodashを使っていないなら、es-toolkitを使ってください。
✅ 1.39.3からLodashと100%の互換性を保証しています
Lodash自身のテストコードをそのまま通過します。動作は同じまま、より軽く高速です。
ts
// lodashと同じ呼び出しの形を es-toolkit/compat でそのまま使えます
import { chunk } from 'es-toolkit/compat';
chunk([1, 2, 3, 4], 0);
// [] を返します。lodashと同じです。マイグレーションの流れ
既存のコードからLodashを取り除くときは、次の流れをおすすめします。
lodash/lodash-esのimportパスをes-toolkit/compatに変えてください。呼び出し側のコードはそのままで大丈夫です。- 時間をかけて呼び出し側を整理しつつ、importを
es-toolkitに切り替えてください。すべて移行できれば、バンドルがより小さく、より高速になります。
es-toolkitとの違い
- APIの形: Lodashと1:1で一致しています。暗黙的な型変換、さまざまな引数の形、非推奨のヘルパーまでそのまま含まれます。
es-toolkitは型安全で整理された形だけを提供します。 - バンドルサイズと速度:
es-toolkitより少し大きく、少し遅いです。Lodashと動作を合わせるための追加処理が入っているためです。 - 非推奨の関数: Lodashで非推奨になった関数も互換性のために
compatには残っていますが、es-toolkitには含まれません。マイグレーション中に一緒に整理してください。
関数ごとの詳細なドキュメントは互換性リファレンスをご覧ください。
設計原則
INFO
es-toolkit/compatの設計原則の方向性は変わる可能性があります。
es-toolkit/compatは、次の機能についてlodashと100%同じ機能を提供することを目指しています。
lodashのテストケースとして書かれている機能@types/lodashまたは@types/lodash-esの型から推測できる機能lodashからes-toolkitへコードをマイグレーションする際に見つかった機能の違い(Issuesページに報告してください)
ただし、以下はes-toolkit/compatの対象外です。
- 暗黙的な型変換: 空文字列を0またはfalseに変換するような動作
- 特殊なケースに最適化された実装: sortedUniqのように、ソートされた配列だけを受け取る関数
Array.prototypeのような組み込みオブジェクトのプロトタイプが変更されたケースへの対応- JavaScript Realmへの対応
- メソッドチェーン:
_(arr).map(...).filter(...)のようなメソッドチェーン
実装状況
INFO
以下の絵文字で、各機能の現在の状態を表しています。
- ✅: 完了(実装されており、lodashのテストコードをすべて通過しています)
- 📝: レビュー中(実装されていますが、lodashのテストコードでテストされていません)
- ❌: 未実装
「レビュー中」と書かれていても、すでにlodashと100%同じ機能を提供している場合があります。
"Array" メソッド
"Collection" メソッド
"Date" メソッド
| 関数名 | 実装状況 |
|---|---|
| now | ✅ |
"Function" メソッド
| 関数名 | 実装状況 |
|---|---|
| after | ✅ |
| ary | ✅ |
| before | ✅ |
| bind | ✅ |
| bindKey | ✅ |
| curry | ✅ |
| curryRight | ✅ |
| debounce | ✅ |
| defer | ✅ |
| delay | ✅ |
| flip | ✅ |
| memoize | ✅ |
| negate | ✅ |
| once | ✅ |
| overArgs | ✅ |
| partial | ✅ |
| partialRight | ✅ |
| rearg | ✅ |
| rest | ✅ |
| spread | ✅ |
| throttle | ✅ |
| unary | ✅ |
| wrap | ✅ |
"Lang" メソッド
"Math" メソッド
| 関数名 | 実装状況 |
|---|---|
| add | ✅ |
| ceil | ✅ |
| divide | ✅ |
| floor | ✅ |
| max | ✅ |
| maxBy | ✅ |
| mean | ✅ |
| meanBy | ✅ |
| min | ✅ |
| minBy | ✅ |
| multiply | ✅ |
| round | ✅ |
| subtract | ✅ |
| sum | ✅ |
| sumBy | ✅ |
"Number" メソッド
| 関数名 | 実装状況 |
|---|---|
| clamp | ✅ |
| inRange | ✅ |
| random | ✅ |

