javascript - Hur kontrollerar man om ett okänt värde är ett giltigt nummer?


Givet ett värde av typen unknown och en konfiguration som beskriver om det värdet måste vara ett heltal eller flyttal. Jag började med denna funktion

function isValueNumber(value: unknown, isAcceptingFloatingPointNumbers: boolean) {
  if (Number.isNaN(value)) {
    return false;
  }
  
  if (!isAcceptingFloatingPointNumbers) {
    return Number.isInteger(value);
  }
  
  return true;
}

Problemet är att när jag anropar funktionen på det här sättet

isValueNumber("this is not a valid number", true)

det returnerar fortfarande true eftersom min kontroll Number.isNaN inte är korrekt (Är Number.IsNaN() mer trasig än isNaN() )

Har du några idéer om hur man kan fixa denna valideringsfunktion?

Svar #1

På detta sätt kommer funktionen att returnera false om det inte är ett number :

function isValueNumber(value: unknown, isAcceptingFloatingPointNumbers: boolean) {
  if (typeof value !== 'number') {
    return false;
  }
  
  if (!isAcceptingFloatingPointNumbers) {
    return Number.isInteger(value);
  }
  
  return true;
}

Relaterade artiklar