objetos - typescript int variable
En Typescript, cómo verificar si una cadena es numérica (4)
Construí una función a partir de la explicación de C Snover .
function isNumber(value: string | number): boolean
{
return !isNaN(Number(value.toString()));
}
En Typescript, esto muestra un error que dice que isNaN solo acepta valores numéricos
isNaN(''9BX46B6A'')
y esto devuelve falso porque parseFloat(''9BX46B6A'')
evalúa como 9
isNaN(parseFloat(''9BX46B6A''))
Todavía puedo ejecutar con el error apareciendo en Visual Studio, pero me gustaría hacerlo de la manera correcta.
Actualmente, he escrito esta función modificada -
static isNaNModified = (inputStr: string) => {
var numericRepr = parseFloat(inputStr);
return isNaN(numericRepr) || numericRepr.toString().length != inputStr.length;
}
La forma de convertir una cadena en un número es con Number
, no con parseFloat
.
Number(''1234'') // 1234
Number(''9BX9'') // NaN
También puede usar el operador unario plus si le gusta la taquigrafía:
+''1234'' // 1234
+''9BX9'' // NaN
Tenga cuidado al verificar contra NaN (el operador ===
y !==
no funcionan como se esperaba con NaN
). Utilizar:
isNaN(maybeNumber) // returns true if NaN, otherwise false
Lo resuelvo usando el operador isNumeric de la biblioteca rxjs (importando rxjs / util / isNumeric
Si una cadena se puede analizar como un número es una preocupación de tiempo de ejecución. Typescript no admite este uso cas, ya que se centra en la seguridad en tiempo de compilación (no en tiempo de ejecución)