defaultNullishValTo

defaultNullishValTo

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

    const defaultToNegativeOne = defaultNullishValTo(-1)
    
    defaultToNegativeOne(1) // is 1
    defaultToNegativeOne(0) // is 0
    defaultToNegativeOne(undefined) // is -1
    const defaultToNegativeOne = defaultNullishValTo(-1)
    
    defaultToNegativeOne(1) // is 1
    defaultToNegativeOne(0) // is 0
    defaultToNegativeOne(undefined) // is -1
    
    const defaultToNegativeOne =
      defaultNullishValTo(-1)
    
    defaultToNegativeOne(1) // is 1
    defaultToNegativeOne(0) // is 0
    defaultToNegativeOne(undefined) // is -1
    const defaultToNegativeOne =
      defaultNullishValTo(-1)
    
    defaultToNegativeOne(1) // is 1
    defaultToNegativeOne(0) // is 0
    defaultToNegativeOne(undefined) // is -1
    
  2. Sometimes we want a default value specifically when undefined or null are passed.

    Below, we have the money per player in a game of Monopoly. Mike joined late, so he doesn't have a value yet. Let's start him off with 1500.

    const players = {
      sam: 2000,
      jen: 0,
      mike: undefined,
    }
    
    const defaultTo1500 = defaultNullishValTo(1500)
    const assignStartingMoney = mapValues(defaultTo1500)
    const updatedPlayers = assignStartingMoney(players)
    
    console.log(updatedPlayers)
    // a new object {
    //   sam: 2000,
    //   jen: 0,
    //   mike: 1500,
    // }
    type Players = Record<string, number | undefined>
    const players: Players = {
      sam: 2000,
      jen: 0,
      mike: undefined,
    }
    
    const defaultTo1500 = defaultNullishValTo(1500)
    const assignStartingMoney = mapValues(defaultTo1500<number>)<Players>
    const updatedPlayers = assignStartingMoney(players)
    
    console.log(updatedPlayers)
    // a new object {
    //   sam: 2000,
    //   jen: 0,
    //   mike: 1500,
    // }
    
    const players = {
      sam: 2000,
      jen: 0,
      mike: undefined,
    }
    
    const defaultTo1500 = defaultNullishValTo(1500)
    const assignStartingMoney = mapValues(
      defaultTo1500
    )
    const updatedPlayers =
      assignStartingMoney(players)
    
    console.log(updatedPlayers)
    // a new object {
    //   sam: 2000,
    //   jen: 0,
    //   mike: 1500,
    // }
    type Players = Record<string, number | undefined>
    const players: Players = {
      sam: 2000,
      jen: 0,
      mike: undefined,
    }
    
    const defaultTo1500 = defaultNullishValTo(1500)
    const assignStartingMoney = mapValues(
      defaultTo1500<number>
    )<Players>
    const updatedPlayers =
      assignStartingMoney(players)
    
    console.log(updatedPlayers)
    // a new object {
    //   sam: 2000,
    //   jen: 0,
    //   mike: 1500,
    // }