What is is-data-descriptor?
The is-data-descriptor npm package is used to determine if an object is a valid data descriptor. Data descriptors are object keys that have attributes like value, writable, enumerable, and configurable. This package checks if a given object conforms to the specification of a data descriptor.
What are is-data-descriptor's main functionalities?
Check if an object is a data descriptor
This feature allows you to verify if a given object is a valid data descriptor by checking its properties and their respective values.
const isDataDescriptor = require('is-data-descriptor');
const descriptor = {value: 'value', writable: true, enumerable: true, configurable: true};
const result = isDataDescriptor(descriptor); // result is true
Other packages similar to is-data-descriptor
is-descriptor
This package is more general than is-data-descriptor. It checks if an object is any kind of descriptor, including data and accessor descriptors. It is a superset of is-data-descriptor functionality.
is-accessor-descriptor
Similar to is-data-descriptor, but specifically checks if an object is a valid accessor descriptor, which includes properties like get, set, enumerable, and configurable.
kind-of
While not limited to descriptors, this utility module can check the type of any JavaScript value, including whether it is a descriptor. It is more versatile but less specialized than is-data-descriptor.
is-data-descriptor

Returns true if a value has the characteristics of a valid JavaScript data descriptor.
Please consider following this project's author, Jon Schlinkert, and consider starring the project to show your :heart: and support.
Install
Install with npm:
$ npm install --save is-data-descriptor
Usage
var isDataDesc = require('is-data-descriptor');
Examples
true
when the descriptor has valid properties with valid values.
isDataDesc({value: 'foo'})
isDataDesc({value: function() {}})
isDataDesc({value: true})
false
when not an object
isDataDesc('a')
isDataDesc(null)
isDataDesc([])
false
when the object has invalid properties
isDataDesc({value: 'foo', bar: 'baz'})
isDataDesc({value: 'foo', bar: 'baz'})
isDataDesc({value: 'foo', get: function(){}})
isDataDesc({get: function(){}, value: 'foo'})
false
when a value is not the correct type
isDataDesc({value: 'foo', enumerable: 'foo'})
isDataDesc({value: 'foo', configurable: 'foo'})
isDataDesc({value: 'foo', writable: 'foo'})
Valid properties
The only valid data descriptor properties are the following:
configurable
(required)
enumerable
(required)
value
(optional)
writable
(optional)
To be a valid data descriptor, either value
or writable
must be defined.
Invalid properties
A descriptor may have additional invalid properties (an error will not be thrown).
var foo = {};
Object.defineProperty(foo, 'bar', {
enumerable: true,
whatever: 'blah',
get: function() {
return 'baz';
}
});
console.log(foo.bar);
About
Contributing
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
Running Tests
Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
$ npm install && npm test
Building docs
(This project's readme.md is generated by verb, please don't edit the readme directly. Any changes to the readme must be made in the .verb.md readme template.)
To generate the readme, run the following command:
$ npm install -g verbose/verb
Related projects
You might also be interested in these projects:
Contributors
Author
Jon Schlinkert
License
Copyright © 2017, Jon Schlinkert.
Released under the MIT License.
This file was generated by verb-generate-readme, v0.6.0, on November 01, 2017.