unpartial
    TypeScript icon, indicating that this package has built-in type declarations

    0.6.3 • Public • Published

    unpartial

    NPM version NPM downloads

    Circle CI Travis CI Codecov Coveralls Status

    Greenkeeper Semantic Release

    Visual Studio Code Wallaby.js

    Unpartial an type.

    It is very common to define a config type and Partial<> it in a function argument. When we received the arguement, we want to merge it with our default config before using it:

    import { unpartial } from 'unpartial'
     
    interface Config {
      require: { a: number }
      optional?: { a: number }
    }
    const defaultConfig = { require: { a: 1 } }
     
    function foo(givenConfig?: Partial<Config>) {
      const config = unpartial(defaultConfig, givenConfig);
      // use config with type safety
    }

    Code completion is avaiable as you type:

    const config = unpartial(defaultConfig, { /* code completion here */});

    It also supports merging two default configs. This is useful when you are extending interface from another package/class.

    import { unpartial } from 'unpartial'
     
    import { Option, defaultOption } from 'another-package'
     
    interface MyOption extends Option { ... }
     
    const myDefaultOption = { ... }
     
    function foo(givenOption?: Partial<MyOption>) {
      const option = unpartial(defaultOption, myDefaultOption, givenOption)
    }

    There are 3 more functions available in this library:

    • unpartialRecursively(): unpartial() deeply.
    • required(): an improved version of unpartial() with better type management.
    • requiredDeep(): an improved version of unpartialRecursively() with better type management.

    The required() and requiredDeep() function is also exposed in type-plus. Feel free to check it out.

    Contribute

    # after fork and clone 
    npm install
     
    # begin making changes 
    git checkout -b <branch>
    npm run watch
     
    # after making change(s) 
    git commit -m "<commit message>"
    git push
     
    # create PR 

    Keywords

    none

    Install

    npm i unpartial

    DownloadsWeekly Downloads

    2,074

    Version

    0.6.3

    License

    MIT

    Unpacked Size

    30.4 kB

    Total Files

    26

    Last publish

    Collaborators

    • unional