Pesquisa de site

javascript - Como verificar se um valor desconhecido é um número válido?


Dado um valor do tipo unknown e uma configuração que descreve se esse valor deve ser um número inteiro ou ponto flutuante. Eu comecei com esta função

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

O problema é que quando eu chamo a função assim

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

isso ainda retorna true porque minha verificação Number.isNaN não está correta (Número.IsNaN() é mais quebrado que isNaN() ?)

Você tem alguma ideia de como consertar essa função validadora?

Resposta #1

Dessa forma, a função retornará falso se não for um number :

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

Artigos relacionados