Frage Überprüfen Sie in Typescript, ob eine Zeichenfolge numerisch ist


In Typoskript zeigt dies einen Fehler an, der besagt, dass IsNaN nur numerische Werte akzeptiert

isNaN('9BX46B6A')

und das ergibt falsch weil parseFloat('9BX46B6A') bewertet zu 9

isNaN(parseFloat('9BX46B6A'))

Ich kann immer noch mit dem Fehler laufen in Visual Studio laufen, aber ich möchte es richtig machen.

Zur Zeit habe ich diese modifizierte Funktion geschrieben -

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

76
2018-05-02 21:47


Ursprung


Antworten:


Der Weg, um eine Zeichenfolge in eine Zahl zu konvertieren, ist mit Numbernicht parseFloat.

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

Sie können auch den unären Plus-Operator verwenden, wenn Sie eine Kurzschrift mögen:

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

Seien Sie vorsichtig bei der Überprüfung gegen NaN (der Betreiber === und !== arbeite nicht wie erwartet mit NaN). Benutzen:

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

146
2018-05-03 06:09



Ich habe es gelöst mit dem istNumerisch Betreiber von rxjs Bibliothek (Importieren rxjs / util / isNumerisch


31
2018-02-08 13:26



Ich habe eine Funktion aus gebaut C Schnüffler Erläuterung.

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

2
2018-05-16 17:06



Ob ein String als Zahl geparst werden kann, ist ein Runtime-Problem. Typescript unterstützt diesen Anwendungsfall nicht, da es sich auf die Sicherheit der Kompilierungszeit (nicht der Laufzeit) konzentriert.


-3
2018-05-02 23:36