2
respostas

[Projeto] Exercício: Contagem de números

import { createInterface } from "readline";

const rl = createInterface({
  input: process.stdin,
  output: process.stdout,
});

rl.question("Escolha um valor final\n> ", (input) => {
  const numero = Number(input);

  if (Number.isNaN(numero) || !Number.isInteger(numero) || numero < 1) {
    console.log("Digite um número inteiro maior que 0");
    rl.close();
    return;
  }

  for (let i = 1; i <= numero; i++) {
    console.log(i);
  }

  rl.close();
});
2 respostas

Oi, Vitor! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Você utilizou bem o Number.isNaN() e o Number.isInteger() para validar a entrada antes de executar o laço. Isso mostra uma boa preocupação com a qualidade do programa e evita comportamentos inesperados. Também ficou bem organizado o uso do return para encerrar a execução quando o valor digitado não for válido.

Uma dica interessante para o futuro é utilizar o metodo String.trim() antes da conversao do numero, para evitar problemas com espacos digitados pelo usuario. Veja este exemplo:


const entrada = input.trim();
const numero = Number(entrada);

console.log(numero);

Nesse exemplo, o trim() remove espacos extras antes e depois do texto digitado, deixando a validacao mais segura.

Como esta sendo sua experiencia praticando JavaScript ate agora?

Conteúdo relacionado:
Alura

Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Oi, Monalisa! Muito obrigado pelo feedback e pela sugestão do trim().

Minha experiência com JavaScript está sendo ótima até agora, estou começando a entender melhor a lógica por trás das validações e da organização do código. xD

Pelos testes que fiz, percebi que o Number() já ignora espaços no começo e no fim, espaços entre números viram NaN e strings vazias acabam virando 0. Como essas situações já estão sendo tratadas no código atual, fiquei com uma dúvida: mesmo assim ainda é interessante usar trim() como boa prática para deixar a validação mais segura e previsível?