function getType(value) {
  let type = typeof (value)
  if (type === TYPES.OBJECT) {
    if (Array.isArray(value)) {
      type = TYPES.ARRAY
    } else if (value === null) {
      type = TYPES.NULL
    }
  } else if (type === 'number') {
    if (isFloat(value)) {
      type = TYPES.FLOAT
    } else {
      type = TYPES.INTEGER
    }
  }
  return type
}
{"attr":3} => object
[{"attr":3}] => array
"string" => string
"" => string
3.17 => float
123 => integer
-23 => integer
true => boolean
undefined => undefined
null => null