Médio JavaScript
Exportação padrão e nomeada juntas
Enunciado
Crie um módulo calculadora.mjs que exporta uma função padrão somar(a, b) e também exporta uma constante nomeada VERSAO = '1.0'. Em app.mjs, importe ambas e exiba "Versão 1.0: 2 + 3 = 5".
Requisitos
- O módulo deve ter
export defaultpara a funçãosomar. - O módulo deve ter
export const VERSAO = '1.0'. - O arquivo
app.mjsdeve importar a função padrão e a constante nomeada. - A saída deve ser exatamente
Versão 1.0: 2 + 3 = 5.
Código inicial
// calculadora.mjs
// TODO: exporte a função padrão somar e a constante VERSAO
// app.mjs
// TODO: importe e use ambos
Saída esperada
Versão 1.0: 2 + 3 = 5
Ver dica
No import, a exportação padrão vem antes das chaves: import somar, { VERSAO } from './calculadora.mjs';.
Mostrar solução
// calculadora.mjs
export const VERSAO = '1.0';
export default function somar(a, b) {
return a + b;
}
// app.mjs
import somar, { VERSAO } from './calculadora.mjs';
const resultado = somar(2, 3);
console.log(`Versão ${VERSAO}: 2 + 3 = ${resultado}`);
Passo a passo
- Em
calculadora.mjs, declaramosexport const VERSAO = '1.0';— uma exportação nomeada de uma constante. - Em seguida,
export default function somar(a, b) { return a + b; }define a exportação padrão do módulo. - No
app.mjs, a linhaimport somar, { VERSAO } from './calculadora.mjs';importa a exportação padrão (sem chaves) e a nomeada (com chaves). - Calculamos
somar(2, 3)e armazenamos emresultado. - Usamos template literal para montar a string final e
console.logpara exibir.
Por que funciona
Um módulo pode ter várias exportações nomeadas e uma exportação padrão. A sintaxe de import combina as duas: o primeiro identificador (sem chaves) recebe o default, e os demais entre chaves recebem as exportações nomeadas. O escopo do módulo mantém VERSAO e somar isolados até serem importados.
Erros comuns
- Colocar a exportação padrão entre chaves:
import { somar, VERSAO }— isso gera erro porquesomaré default, não nomeada. - Tentar ter dois
export defaultno mesmo módulo:export default function a() {}; export default function b() {}— erro de sintaxe. - Esquecer de exportar
VERSAO: se não tiverexport, ela não estará disponível para importação.
Outra forma de resolver
Poderia exportar somar como nomeada (export function somar) e importar import { somar, VERSAO }. A escolha entre default e nomeada depende do estilo do projeto; default é útil para o "principal" do módulo.
Saída esperada
Versão 1.0: 2 + 3 = 5