1.38.0isPlainObject
بررسی میکند که آیا یک مقدار یک Plain Object با Object.prototype یا null بهعنوان prototype است یا خیر.
isPlainObject(value):value is Record<PropertyKey, unknown>نحوه عملکرد
تابع ابتدا null و مقادیری را که typeof آنها object نیست رد میکند. سپس prototype شیء را بررسی میکند و فقط زمانی true برمیگرداند که prototype برابر Object.prototype یا null باشد.
بررسی Prototype
اشیایی که با object literal یا new Object() ساخته میشوند معمولاً Object.prototype را بهعنوان prototype دارند. اشیایی که با Object.create(null) ساخته میشوند prototype برابر null دارند و این تابع آنها را نیز قبول میکند.
اشیای غیر Plain
آرایهها، نمونههای Date، Map، Set و نمونههای کلاسهای سفارشی Plain Object محسوب نمیشوند، زیرا prototype آنها با Object.prototype و null متفاوت است.
Type Guard
نوع خروجی value is Record<PropertyKey, unknown> است و به TypeScript اجازه میدهد داخل شرط، نوع مقدار را به یک object کلید-مقدار محدود کند.
پارامترها
valueunknownالزامیمقداری که باید بررسی شود.
مقدار بازگشتی
value is Record<PropertyKey, unknown>اگر مقدار یک object باشد که prototype آن Object.prototype یا null باشد، true برمیگرداند.
مثالها
استفاده پایه
بررسی اینکه مقادیر مختلف Plain Object هستند یا خیر.
import { isPlainObject } from "@cyref/js";
isPlainObject({});
// true
isPlainObject({ name: "Amir" });
// true
isPlainObject(Object.create(null));
// true
isPlainObject([]);
// false
isPlainObject(new Date());
// false
isPlainObject(null);
// false
isPlainObject("hello");
// falseمحدود کردن نوع
isPlainObject یک Type Guard در TypeScript است و در صورت true شدن، نوع مقدار را به Record<PropertyKey, unknown> محدود میکند.
const value: unknown = {
name: "Amir",
};
if (isPlainObject(value)) {
console.log(value.name);
}اشیاء با prototype برابر null
اشیایی که با Object.create(null) ساخته شدهاند، توسط این تابع Plain Object محسوب میشوند.
const value = Object.create(null);
isPlainObject(value);
// true