defaultFalseyValTo

defaultFalseyValTo

  • (defaultVal: any) => (val: any) => any
  1. Return a default value if a falsey one is passed.

    const defaultToNoName = defaultFalseyValTo('<no name>')
    
    defaultToNoName('mary') // is mary
    defaultToNoName('') // is <no name>
    defaultToNoName(undefined) // is <no name>
    const defaultToNoName = defaultFalseyValTo('<no name>')
    
    defaultToNoName('mary') // is mary
    defaultToNoName('') // is <no name>
    defaultToNoName(undefined) // is <no name>
    
    const defaultToNoName =
      defaultFalseyValTo('<no name>')
    
    defaultToNoName('mary') // is mary
    defaultToNoName('') // is <no name>
    defaultToNoName(undefined) // is <no name>
    const defaultToNoName =
      defaultFalseyValTo('<no name>')
    
    defaultToNoName('mary') // is mary
    defaultToNoName('') // is <no name>
    defaultToNoName(undefined) // is <no name>
    
  2. Sometimes we want a default value in place of a falsey one. Below, we let people build their own bear. If they don't provide a name, let's name it Teddy.

    const defaultToTeddy = defaultFalseyValTo('Teddy')
    const defaultNameToTeddy = update({ name: defaultToTeddy })
    
    const bearsToBuild = [
      {
        name: '',
        shirt: 'blue',
      },
      {
        name: 'Winnie',
        shirt: 'red',
      },
      {
        name: undefined,
        shirt: 'purple',
      },
    ]
    
    const defaultAllNames = mapValues(defaultNameToTeddy)
    const updatedBears = defaultAllNames(bearsToBuild)
    
    console.log(updatedBears)
    // [
    //   {
    //     name: Teddy
    //     shirt: blue
    //   }, {
    //     name: Winnie
    //     shirt: red
    //   }, {
    //     name: Teddy
    //     shirt: purple
    //   }
    // ]
    type Bear = {
      name?: string
      shirt: string
    }
    
    const defaultToTeddy = defaultFalseyValTo('Teddy')
    const defaultNameToTeddy = update({ name: defaultToTeddy })<Bear>
    
    const bearsToBuild: Bear[] = [
      {
        name: '',
        shirt: 'blue',
      },
      {
        name: 'Winnie',
        shirt: 'red',
      },
      {
        name: undefined,
        shirt: 'purple',
      },
    ]
    
    const defaultAllNames = mapValues(defaultNameToTeddy)<Bear[]>
    const updatedBears = defaultAllNames(bearsToBuild)
    
    console.log(updatedBears)
    // [
    //   { name: Teddy, shirt: blue },
    //   { name: Winnie, shirt: red },
    //   { name: Teddy, shirt: purple },
    // ]
    
    const defaultToTeddy = defaultFalseyValTo('Teddy')
    const defaultNameToTeddy = update({
      name: defaultToTeddy,
    })
    
    const bearsToBuild = [
      {
        name: '',
        shirt: 'blue',
      },
      {
        name: 'Winnie',
        shirt: 'red',
      },
      {
        name: undefined,
        shirt: 'purple',
      },
    ]
    
    const defaultAllNames = mapValues(
      defaultNameToTeddy
    )
    const updatedBears = defaultAllNames(bearsToBuild)
    
    console.log(updatedBears)
    // [
    //   {
    //     name: Teddy
    //     shirt: blue
    //   }, {
    //     name: Winnie
    //     shirt: red
    //   }, {
    //     name: Teddy
    //     shirt: purple
    //   }
    // ]
    type Bear = {
      name?: string
      shirt: string
    }
    
    const defaultToTeddy = defaultFalseyValTo('Teddy')
    const defaultNameToTeddy = update({
      name: defaultToTeddy,
    })<Bear>
    
    const bearsToBuild: Bear[] = [
      {
        name: '',
        shirt: 'blue',
      },
      {
        name: 'Winnie',
        shirt: 'red',
      },
      {
        name: undefined,
        shirt: 'purple',
      },
    ]
    
    const defaultAllNames = mapValues(
      defaultNameToTeddy
    )<Bear[]>
    const updatedBears = defaultAllNames(bearsToBuild)
    
    console.log(updatedBears)
    // [
    //   { name: Teddy, shirt: blue },
    //   { name: Winnie, shirt: red },
    //   { name: Teddy, shirt: purple },
    // ]