function emptyRepresentation(value, typeHint) {
    switch (typeHint) {
      case 'function':
        return '[Function]';
      case 'object':
        return '{}';
      case 'array':
        return '[]';
      default:
        return value.toString();
    }
  }
If a value could have properties, and has none, this function is called,
which returns a string representation of the empty value.

Functions w/ no properties return `'[Function]'`
Arrays w/ length === 0 return `'[]'`
Objects w/ no properties return `'{}'`
All else: return result of `value.toString()`

@private
@param {*} value The value to inspect.
@param {string} typeHint The type of the value
@returns {string}