typeof true === "boolean"Para mí, la línea de código anterior es propensa a errores porque la cadena "booleano" puede escribirse mal fácilmente:
typeof true === "Boolean"Así que tiene que haber una mejor función integrada para hacer esto.
Podrías comparar con typeof true .
if(typeof someVar === typeof true){ }Supongo que podrías comparar contra los dos valores posibles:
if (someVal === true || someVal === false)que arrojará un ReferenceError si ha escrito mal uno de ellos, pero aparte de eso, JavaScript realmente no tiene el tipo de rigor que está buscando.
Esta es una de las situaciones en las que recomiendo encarecidamente TypeScript, que de hecho le advertirá que no haga tal cosa (y también le advertirá contra muchos otros errores relacionados con el tipo que son fáciles de cometer):
const someBool = Math.random() < 0.5 ? '123' : true; if (typeof someBool === 'boolea') { }lanza
Esta condición siempre devolverá 'falso' ya que los tipos '"cadena" | "número" | "grande" | "booleano" | "símbolo" | "indefinido" | "objeto" | "función"' y '"boolea"' no se superponen.
Considero que TypeScript es esencial para cualquier secuencia de comandos de tamaño razonable debido a los muchos errores posibles contra los que protege: puede convertir errores de tiempo de ejecución molestos o difíciles de depurar en errores de tiempo de compilación trivialmente reparables.
Yo uso este fragmento en mi código
// Type checker function const isType = (type, val) => !!(val.constructor && val.constructor.name.toLowerCase() === type.toLowerCase()); // Tests console.log(isType("array", [])); console.log(isType("object", {})); console.log(isType("regexp", new RegExp("foobar"))); console.log(isType("BOOlean", false)); // Last is false console.log(isType("string", []));