Un enfoque limpio
Puede considerar usar una biblioteca muy pequeña y libre de dependencias como Not . Resuelve todos los problemas:
let number = 10
let array = []
not('number', 10)
not('number', [])
let not = Object.create(Not)
not.defineType({
primitive: 'number',
type: 'integer',
pass: function(candidate) {
return candidate.toFixed(0) === candidate.toString()
return Number.isInteger(candidate)
}
})
not.not('integer', 4.4)
not.is('integer', 4.4)
not.is('integer', 8)
Si lo convierte en un hábito, su código será mucho más fuerte. TypeScript resuelve parte del problema pero no funciona en tiempo de ejecución, lo cual también es importante.
function test (string, boolean) {
not('string', string)
not('boolean', boolean)
}