Skip to content

defaultsDeep (Lodash 互換性)

分割代入と Object.assign() を使用してください

この defaultsDeep 関数は、ネストされたオブジェクトの再帰的なマージと循環参照の処理により、複雑で遅く動作します。

代わりに、より高速で現代的な分割代入と Object.assign() を使用してください。

ネストされたオブジェクトに再帰的にデフォルト値を設定します。

typescript
const result = defaultsDeep(target, ...sources);

参照

defaultsDeep(target, ...sources)

ネストされたオブジェクトの undefined プロパティに再帰的にデフォルト値を設定したい場合は、defaultsDeep を使用してください。defaults と似ていますが、ネストされたオブジェクトもマージします。

typescript
import { defaultsDeep } from 'es-toolkit/compat';

// ネストされたオブジェクトのデフォルト値設定
defaultsDeep({ a: { b: 2 } }, { a: { b: 3, c: 3 }, d: 4 });
// 戻り値: { a: { b: 2, c: 3 }, d: 4 }

// undefined プロパティのみがデフォルト値で埋められます
defaultsDeep({ a: { b: undefined } }, { a: { b: 1 } });
// 戻り値: { a: { b: 1 } }

// null 値はそのまま保持されます
defaultsDeep({ a: null }, { a: { b: 1 } });
// 戻り値: { a: null }

複数のソースオブジェクトを渡して、デフォルト値を段階的に適用できます。

typescript
import { defaultsDeep } from 'es-toolkit/compat';

defaultsDeep({ a: { b: 2 } }, { a: { c: 3 } }, { a: { d: 4 }, e: 5 });
// 戻り値: { a: { b: 2, c: 3, d: 4 }, e: 5 }

パラメータ

  • target (any): デフォルト値を設定する対象オブジェクトです。
  • ...sources (any[]): デフォルト値を提供するソースオブジェクトです。

戻り値

(any): デフォルト値が再帰的に設定されたオブジェクトを返します。最初の引数 target が変更されます。

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