EasyPythonJavaScriptTypeScript

Precise typeof Checker

FunctionsObjects

The native typeof operator is famously coarse: it reports 'object'
for arrays, null, dates, regexes and plain objects alike. Implement
solve(value) that returns the precise lowercase type tag for any
JavaScript value.

Expected outputs

  • solve(null)'null'
  • solve([])'array'
  • solve(new Date())'date'
  • solve(/abc/)'regexp'
  • solve({})'object'
  • solve('hi')'string'
  • solve(undefined)'undefined'
  • solve(42)'number'

The result must always be a non-empty lowercase string.

Sample tests

Test #1Number literal
Input: [42]
Output: "number"
Test #2String literal
Input: ["hello"]
Output: "string"
Test #3Plain object
Input: [{"a":1}]
Output: "object"
Test #4Arrays are not "object"
Input: [[1,2,3]]
Output: "array"
Test #5null is not "object"
Input: [null]
Output: "null"