Valores variáveis objetos e coleções
Nesta aula
Representar uma informação
O catálogo precisa distinguir um título, uma quantidade e uma autorização de exibição. Esses valores têm usos diferentes. Uma string representa texto, como Conserto de bicicletas. Um number permite representar números e operações numéricas. Um boolean tem os valores true e false. A palavra true escrita sem aspas é um booleano; o texto "true" entre aspas é uma string.
Essa distinção evita uma falha concreta: se um arquivo traz ativo como o texto "false", um teste que apenas pergunta se o valor existe pode tratá-lo como verdadeiro. O contrato do projeto exige um booleano. Contrato é a descrição explícita do que uma parte aceita e devolve. Mais adiante, a validação rejeitará os dados que não o cumprem.
Nomes e atribuições
const cria um vínculo que não poderá receber outro valor por uma nova atribuição. let permite trocar o valor associado ao nome. Escolha nomes que expressem a informação; titulo informa mais do que x. Palavras da linguagem, como const, precisam respeitar a sintaxe do JavaScript. Você pode escolher nomes em português para suas próprias variáveis.
const titulo = 'Revisão';
let vagas = 2;
vagas = vagas - 1;
console.log(titulo, vagas);O programa calcula 2 menos 1 e guarda 1 em vagas. O lado direito de uma atribuição é avaliado antes de o nome receber o resultado. A igualdade estrita é escrita ===; vagas === 1 produz um booleano. Não confunda essa comparação com vagas = 1, que modifica o valor.
| Expressão | Resultado e motivo |
|---|---|
| 2 + 3 | 5 porque soma dois números. |
| '2' + '3' | 23 como texto, pois reúne strings. |
| true === 'true' | false porque os tipos diferem. |
| 2 === 2 | true porque valor e tipo coincidem. |
Um registro e uma lista de registros
Um objeto agrupa propriedades relacionadas. No objeto caso, id é o identificador estável, titulo é o nome exibido, descricao explica o serviço e ativo controla se ele pode aparecer. A expressão caso.titulo lê uma propriedade. A ordem de escrita das propriedades não define uma sequência de execução do atendimento.
Um array reúne valores em uma sequência. Os índices começam em zero: casos[0] lê o primeiro item. Uma coleção vazia é escrita []. Vazia não significa inválida: pode ser um catálogo válido ainda sem serviços ativos. Ao procurar uma posição que não existe, o resultado pode ser undefined; acessar uma propriedade desse resultado sem verificar causa uma falha.
const titulo = 'Conserto de bicicletas';
const ativo = true;
const vagas = 2;
const caso = { id: 'CASO-001', titulo, descricao: 'Revisão básica.', ativo };
const casos = [caso];
console.log(typeof titulo, typeof ativo, typeof vagas);
console.log(casos[0].id, casos[0].ativo === true);Salve e execute node 02_dados.mjs dentro de laboratorios_iniciais. A primeira saída identifica os tipos string boolean number. A segunda mostra CASO-001 true. O acesso casos[0].id primeiro encontra o registro e depois lê seu identificador. A expressão casos[0].ativo === true compara o valor com o booleano esperado.
Copiar e transformar sem surpreender o chamador
Uma função que recebe um array pode alterar o próprio array ou devolver outro. O contrato precisa tornar isso previsível. No projeto, a listagem pública produz novos objetos contendo somente id, titulo e descricao. Ela não muda a fonte e não expõe a propriedade ativo. Esse recorte de saída é uma decisão explícita, não uma consequência automática de usar JSON.
const não congela o interior de um objeto. Se const caso guarda um objeto, a instrução caso.titulo = "Outro" ainda pode modificar sua propriedade. O que fica impedido é atribuir um objeto inteiramente diferente ao mesmo nome caso. Essa diferença será relevante ao comparar o estado anterior e posterior de uma operação.
Exercício com dados fornecidos
Considere A com ativo true, B com ativo false e C com ativo "false". Indique os tipos dos três campos, quais registros cumprem o contrato e quais devem aparecer se todos os dados forem válidos. Resolva antes de consultar a resposta.
Ver solução comentada
Solução: A e B possuem booleanos e cumprem essa parte do contrato; C possui string e deve ser rejeitado. Em um conjunto válido formado apenas por A e B, somente A aparece. No projeto completo, a presença de C invalida o conjunto recebido, em vez de silenciosamente ocultar o erro. O comportamento foi escolhido para tornar a qualidade dos dados visível.
Para concluir, explique por que [] pode ser uma entrada válida, por que o primeiro índice é 0 e por que um nome declarado com const pode apontar para um objeto cujas propriedades mudam. Se sua resposta chamar "false" de booleano, retome a tabela antes de avançar.
Fontes relacionadas
Consulte os limites e as seções de apoio de cada referência.
S18Tente o exercício antes de consultar a solução. Marque a aula para organizar sua leitura.
A conclusão desta leitura não equivale a certificação ou aceite de um projeto real. Teste os exemplos no escopo indicado e registre as limitações.