Fácil TypeScript
Ativando noImplicitAny
Enunciado
Escreva uma função multiplicar que recebe dois parâmetros e retorna o produto. O código deve compilar sem erros mesmo com noImplicitAny ativado. Use anotações de tipo explícitas.
Requisitos
- A função deve se chamar
multiplicar. - Os parâmetros devem ter tipo
numberexplícito. - O retorno deve ser
number. - O código deve compilar sem erros com
noImplicitAnyativo.
Código inicial
// Complete a função abaixo para que ela compile com noImplicitAny ativo.
function multiplicar(a, b) {
return a * b;
}
console.log(multiplicar(3, 4));
Saída esperada
12
Ver dica
Adicione : number após cada parâmetro e após os parênteses para indicar o tipo de retorno.
Mostrar solução
// Função com tipos explícitos para satisfazer noImplicitAny.
function multiplicar(a: number, b: number): number {
return a * b;
}
console.log(multiplicar(3, 4)); // 12
Passo a passo
- Declaramos a função
multiplicarcom dois parâmetros. - Adicionamos
: numbera cada parâmetro para evitar que o compilador infiraanyimplicitamente. - Especificamos
: numbercomo tipo de retorno após os parênteses. - O corpo da função simplesmente retorna o produto
a * b. - Chamamos a função com
3e4e imprimimos o resultado.
Por que funciona
Com noImplicitAny ativo, o TypeScript exige que todos os parâmetros tenham tipo explícito ou sejam inferíveis a partir do contexto. Ao anotar os tipos, o compilador entende que a e b são números e permite a operação * sem erros. Isso evita que erros de tipo passem despercebidos.
Erros comuns
- Esquecer a anotação de retorno:
function multiplicar(a: number, b: number) { ... }ainda compila, mas é boa prática anotar o retorno. Se o retorno fosse inferido comoanyem algum caso, o erro apareceria. - Anotar apenas um parâmetro:
function multiplicar(a: number, b) { ... }gera erro embpor falta de tipo. - Usar
anyexplícito:function multiplicar(a: any, b: any): any { ... }compila, mas foge do propósito donoImplicitAny.
Outra forma de resolver
Se você quiser evitar anotações repetitivas, pode usar uma arrow function com tipos inferidos pelo contexto de uso, mas ainda é necessário anotar os parâmetros:
const multiplicar = (a: number, b: number): number => a * b;
Saída esperada
12