В Typescript, Как проверить, является ли строка числовой


в Typescript, это показывает ошибку говоря isNaN принимает только числовые значения

isNaN('9BX46B6A')

и это возвращает false, потому что parseFloat('9BX46B6A') значение 9

isNaN(parseFloat('9BX46B6A'))

Я все еще могу работать с ошибкой, отображаемой в Visual Studio, но я хотел бы сделать это правильно.

в настоящее время, я написал эту модифицированную функцию -

static isNaNModified = (inputStr: string) => {
    var numericRepr = parseFloat(inputStr);
    return isNaN(numericRepr) || numericRepr.toString().length != inputStr.length;
}
4 84

4 ответа:

способ преобразования строки в число-это с Number, а не parseFloat.

Number('1234') // 1234
Number('9BX9') // NaN

вы также можете использовать унарный оператор плюс, если вам нравится сокращенное:

+'1234' // 1234
+'9BX9' // NaN

будьте осторожны при проверке против NaN (оператор === и !== не работает, как ожидалось с NaN). Использование:

 isNaN(maybeNumber) // returns true if NaN, otherwise false

Я решил это с помощью isNumeric оператор rxjs библиотека (импорт rxjs/util / isNumeric

Я построил функцию из C Snover объяснение.

function isNumber(value: string | number): boolean
{
   return !isNaN(Number(value.toString()));
}

может ли строка быть проанализирована как число-это проблема времени выполнения. Typescript не поддерживает этот вариант использования, поскольку он ориентирован на безопасность времени компиляции (а не времени выполнения).