Skip to content

wrap

INFO

この関数は互換性のために es-toolkit/compat からのみインポートできます。代替可能なネイティブ JavaScript API があるか、まだ十分に最適化されていないためです。

es-toolkit/compat からこの関数をインポートすると、lodash と完全に同じように動作します。

与えられた関数 func をラップする新しい関数を作成します。 このプロセスでは、元の関数の実行前後に wrapper 関数で定義された追加のロジックを適用できます。

関数の代わりに値 value が提供された場合、この値は wrapper 関数の最初の引数として渡されます。

インターフェース

typescript
function wrap<F extends (...args: unknown[]) => unknown>(
  func: F,
  wrapper: (value: F, ...args: Parameters<F>) => ReturnType<F>
): F;
function wrap<T, A extends unknown[], R>(
  value: T,
  wrapper: (value: T, ...args: A) => R
): (...args: A) => R;

typescript
// Wrap a function
const greet = (name: string) => `Hi, ${name}`;
const wrapped = wrap(greet, (value, name) => `[LOG] ${value(name)}`);
wrapped('Bob'); // => "[LOG] Hi, Bob"

// Wrap a primitive value
const wrapped = wrap('value', v => `<p>${v}</p>`);
wrapped(); // => "<p>value</p>"

MIT ライセンスの下で配布されています。