Лучший способ получить тип переменной Javascript?

Есть ли лучший способ получить тип переменной в JS, чем typeof ? Он отлично работает, когда вы делаете:

> typeof 1
"number"
> typeof "hello"
"string"

Но это бесполезно, когда вы пытаетесь:

> typeof [1,2]
"object"
>r = new RegExp(/./)
/./
> typeof r
"function"

Я знаю instanceof , но для этого вам нужно знать тип заранее.

> [1,2] instanceof Array
true
> r instanceof RegExp
true

Есть ли способ лучше?

242
задан Ziki 2 November 2015 в 22:44
поделиться

1 ответ

Я предполагаю, что наиболее универсальное решение здесь - состоит в том, чтобы проверить на undefined и null первый, затем просто звонить constructor.name.toString().

const getType = v =>
  v === undefined
    ? 'undefined'
    : v === null
      ? 'null'
      : v.constructor.name.toLowerCase();




console.log(getType(undefined)); // 'undefined'
console.log(getType(null)); // 'null'
console.log(getType('')); // 'string'
console.log(getType([])); // 'array'
console.log(getType({})); // 'object'
console.log(getType(new Set())); // `set'
console.log(getType(Promise.resolve())); // `promise'
console.log(getType(new Map())); // `map'
1
ответ дан 23 November 2019 в 03:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: