CyrefJS
CCyrefJS
EN
بازگشت به مستندات
آبجکت/از نسخه 1.38.0

defaults

ویژگی‌های undefined یک شیء را با مقادیر موجود در یک شیء منبع پر می‌کند.

defaults(object, source):T & Omit<U, keyof T>

پارامترها

objectTالزامی

شیء مقصد که ویژگی‌های undefined آن باید با مقادیر پیش‌فرض پر شوند.

sourceUالزامی

شیء منبع که شامل مقادیر پیش‌فرض است.

مقدار بازگشتی

T & Omit<U, keyof T>

یک شیء جدید شامل ویژگی‌های object را برمی‌گرداند که ویژگی‌های undefined آن با مقادیر source پر شده‌اند.

مثال‌ها

01

استفاده پایه

مقادیر موجود در source جای مقادیر undefined را می‌گیرند.

TypeScript
const result = defaults(
  {
    name: "Alice",
    age: undefined,
  },
  {
    age: 25,
    active: true,
  },
);

console.log(result);
// {
//   name: "Alice",
//   age: 25,
//   active: true
// }
02

حفظ مقادیر موجود

یک مقدار موجود و تعریف‌شده با مقدار source جایگزین نمی‌شود.

TypeScript
const result = defaults(
  {
    name: "Alice",
    age: 30,
  },
  {
    name: "Bob",
    age: 25,
  },
);

console.log(result);
// {
//   name: "Alice",
//   age: 30
// }
03

مقادیر undefined

فقط ویژگی‌هایی که مقدار فعلی آن‌ها undefined است، مقدار source را دریافت می‌کنند.

TypeScript
const result = defaults(
  {
    a: undefined,
    b: 0,
    c: false,
    d: "",
    e: null,
  },
  {
    a: 1,
    b: 2,
    c: true,
    d: "default",
    e: "value",
  },
);

console.log(result);
// {
//   a: 1,
//   b: 0,
//   c: false,
//   d: "",
//   e: null
// }
04

ویژگی‌های اضافی

ویژگی‌هایی که فقط در source وجود دارند به نتیجه اضافه می‌شوند.

TypeScript
const result = defaults(
  {
    name: "Alice",
  },
  {
    age: 25,
    active: true,
  },
);

console.log(result);
// {
//   name: "Alice",
//   age: 25,
//   active: true
// }
05

مقادیر undefined در source

اگر یک ویژگی موجود در source خودش undefined باشد، همان مقدار undefined قرار می‌گیرد.

TypeScript
const result = defaults(
  {
    name: undefined,
  },
  {
    name: undefined,
  },
);

console.log(result.name);
// undefined
06

اشیای تو در تو

این تابع به‌صورت shallow عمل می‌کند و اشیای تو در تو را merge نمی‌کند.

TypeScript
const result = defaults(
  {
    settings: {
      theme: "dark",
    },
  },
  {
    settings: {
      language: "en",
    },
  },
);

console.log(result);
// {
//   settings: {
//     theme: "dark"
//   }
// }
07

برگرداندن شیء جدید

شیء اصلی تغییر نمی‌کند، چون تابع ابتدا یک شیء جدید با object spread ایجاد می‌کند.

TypeScript
const original = {
  name: "Alice",
  age: undefined,
};

const result = defaults(original, {
  age: 25,
});

console.log(result);
// { name: "Alice", age: 25 }

console.log(original.age);
// undefined

console.log(result === original);
// false
08

ویژگی‌های enumerable در source

فقط ویژگی‌های own و enumerable با کلید string در source پردازش می‌شوند.

TypeScript
const source = {
  age: 25,
};

Object.defineProperty(source, "hidden", {
  value: true,
  enumerable: false,
});

const result = defaults(
  {
    age: undefined,
    hidden: undefined,
  },
  source,
);

console.log(result);
// {
//   age: 25,
//   hidden: undefined
// }
ساخته شده با@cyref/js·مستندات رسمی