项目作者: vitalets

项目描述 :
One-level options with default values and validation
高级语言: JavaScript
项目地址: git://github.com/vitalets/flat-options.git
创建时间: 2017-10-10T10:31:34Z
项目社区:https://github.com/vitalets/flat-options

开源协议:

下载


flat-options

Build Status
npm
license

One-level options with default values and validation

Utility function to merge simple one-level options with default values and perform validation.

Comparison to Object.assign

Benefits over Object.assign are:

  • exclude of undefined values (useful for conditional options):

    1. const defaults = {foo: 'bar'};
    2. const options = {foo: undefined};
    3. Object.assign({}, defaults, options); // -> {foo: undefined}
    4. // vs
    5. flatOptions(options, defaults); // -> {foo: 'bar'}
  • validation of options keys:

    1. const defaults = {foo: 'bar'};
    2. const options = {unknown: 'baz'};
    3. Object.assign({}, defaults, options); // -> {foo: 'bar', unknown: 'baz'}
    4. // vs
    5. flatOptions(options, defaults); // -> throws error "Unknown option"!

Comparison to other packages

Benefits over existing defaults,
lodash.defaults and
object.defaults are:

  • auto-validation of options keys
  • zero dependencies

Note that this package is only for one-level options, for nested ones please use alternative packages

Installation

  1. npm install --save flat-options

Usage

  1. import flatOptions from 'flat-options';
  2. const defaults = {
  3. a: 1,
  4. b: false
  5. };
  6. class Foo {
  7. constructor(options) {
  8. this._options = flatOptions(options, defaults);
  9. }
  10. }
  11. const foo = new Foo({a: 2}); // foo._options will be {a: 2, b: false}

License

MIT @ Vitaliy Potapov