assignDefaults

assignDefaults

  • (defaults: object) => (base: object) => object
    Or
  • (defaults: map) => (base: map) => map
  1. Assign a KeyedCollection over defaults.

    const ab = { a: 1, b: 2 }
    const assignABDefaults = assignDefaults(ab)
    const abc = assignABDefaults({ a: 2, c: 3 })
    console.log(abc) // is { a: 2, b: 2, c: 3 }
    const ab = { a: 1, b: 2 }
    const assignABDefaults = assignDefaults(ab)
    const abc = assignABDefaults({ a: 2, c: 3 })
    console.log(abc) // is { a: 2, b: 2, c: 3 }
    
    const ab = { a: 1, b: 2 }
    const assignABDefaults = assignDefaults(ab)
    const abc = assignABDefaults({ a: 2, c: 3 })
    console.log(abc) // is { a: 2, b: 2, c: 3 }
    const ab = { a: 1, b: 2 }
    const assignABDefaults = assignDefaults(ab)
    const abc = assignABDefaults({ a: 2, c: 3 })
    console.log(abc) // is { a: 2, b: 2, c: 3 }
    
  2. One common case is to assign default options. Below, we write a function that greets someone. By default we greet "<Name>" with "How are you?"

    const defaults = {
      name: '<Name>',
      message: 'How are you?',
    }
    
    const getOptsWithDefaults = assignDefaults(defaults)
    
    const greet = opts => {
      const { name, message } = getOptsWithDefaults(opts)
      console.log(`Hello ${name}.  ${message}`)
    }
    
    greet({ name: 'Grace' })
    // prints "Hello Grace.  How are you?
    type Options = {
      name: string
      message: string
    }
    
    const defaults = {
      name: '<Name>',
      message: 'How are you?',
    }
    
    const getOptsWithDefaults = assignDefaults(defaults)
    
    const greet = (opts: Partial<Options>) => {
      const { name, message } = getOptsWithDefaults(opts)
      console.log(`Hello ${name}.  ${message}`)
    }
    
    greet({ name: 'Grace' })
    // prints "Hello Grace.  How are you?
    
    const defaults = {
      name: '<Name>',
      message: 'How are you?',
    }
    
    const getOptsWithDefaults =
      assignDefaults(defaults)
    
    const greet = opts => {
      const { name, message } =
        getOptsWithDefaults(opts)
      console.log(`Hello ${name}.  ${message}`)
    }
    
    greet({ name: 'Grace' })
    // prints "Hello Grace.  How are you?
    type Options = {
      name: string
      message: string
    }
    
    const defaults = {
      name: '<Name>',
      message: 'How are you?',
    }
    
    const getOptsWithDefaults =
      assignDefaults(defaults)
    
    const greet = (opts: Partial<Options>) => {
      const { name, message } =
        getOptsWithDefaults(opts)
      console.log(`Hello ${name}.  ${message}`)
    }
    
    greet({ name: 'Grace' })
    // prints "Hello Grace.  How are you?