es-toolkit/docs/compatibility.md
2024-09-08 17:11:06 +09:00

2.2 KiB

Compatibility with Lodash

// es-toolkit/compat aims to provide 100% feature parity with lodash
import { chunk } from 'es-toolkit/compat';

chunk([1, 2, 3, 4], 0);
// Returns [], which is identical to lodash

For maximum compatibility with lodash, use es-toolkit/compat, a compatibility layer that bridges the gap between the two libraries.

This module is designed to provide an identical API to lodash, making it easier to switch between the two libraries.

es-toolkit/compat has been thoroughly tested with real test cases from lodash.

It's important to note that es-toolkit/compat may have a slight performance impact and a larger bundle size compared to the original es-toolkit. This module is designed to facilitate a smooth transition and should be replaced with the original es-toolkit for optimal performance once the migration is complete.

Design Principles

::: info Design principles are subject to change. :::

Our compatibility layer aims to achieve feature parity with 100% accuracy for:

  • Features that are written as a test case in lodash.
  • Features that can be inferred from types of @types/lodash or @types/lodash-es.

However, the following are out of scope for es-toolkit/compat:

  • Implicit type conversions, such as converting an empty string to zero or false.
  • Functions that have specialized implementations for specific types of arrays, like sortedUniq.
  • Handling cases where internal object prototypes, like Array.prototype, have been modified.
  • Managing cases with JavaScript realms.
  • Method chaining support through "Seq" methods.

Implementation Status

::: info The following emojis indicate the status of each feature:

  • : Completed (The function is fully implemented and has passed all tests with lodash test code.)
  • 📝: In Review (The function is implemented but hasn't been tested with lodash test code yet.)
  • : Not Implemented (The function hasn't been implemented.)

Even if a feature is marked "in review," it might already be under review to ensure it matches lodash perfectly, and it could already offer the same functionality. :::