36 lines
673 B
TypeScript
36 lines
673 B
TypeScript
|
/**
|
||
|
Check if a value is a plain object.
|
||
|
|
||
|
An object is plain if it's created by either `{}`, `new Object()`, or `Object.create(null)`.
|
||
|
|
||
|
@example
|
||
|
```
|
||
|
import isPlainObject from 'is-plain-obj';
|
||
|
import {runInNewContext} from 'node:vm';
|
||
|
|
||
|
isPlainObject({foo: 'bar'});
|
||
|
//=> true
|
||
|
|
||
|
isPlainObject(new Object());
|
||
|
//=> true
|
||
|
|
||
|
isPlainObject(Object.create(null));
|
||
|
//=> true
|
||
|
|
||
|
// This works across realms
|
||
|
isPlainObject(runInNewContext('({})'));
|
||
|
//=> true
|
||
|
|
||
|
isPlainObject([1, 2, 3]);
|
||
|
//=> false
|
||
|
|
||
|
class Unicorn {}
|
||
|
isPlainObject(new Unicorn());
|
||
|
//=> false
|
||
|
|
||
|
isPlainObject(Math);
|
||
|
//=> false
|
||
|
```
|
||
|
*/
|
||
|
export default function isPlainObject<Value>(value: unknown): value is Record<PropertyKey, Value>;
|