Funções
O que são funções em TypeScript
Funções em TypeScript são blocos de código reutilizáveis que podem aceitar parâmetros de tipos definidos e retornar valores de tipos específicos. Elas estendem as funções do JavaScript ao adicionar tipagem estática, que ajuda a detetar erros em tempo de compilação e melhorar a qualidade do código.
Sintaxe básica
A sintaxe de uma função é similar à do JavaScript, mas com tipos explícitos:
function nomeDaFuncao(param1: tipo1, param2: tipo2): tipoRetorno {
// corpo da função
return resultado; // opcional, se a função retorna algo
}
Exemplo:
function somar(a: number, b: number): number {
return a + b;
}
const resultado = somar(5, 3); // resultado = 8
Aqui, a e b são números e a função retorna um número.
Parâmetros opcionais e padrão
- Parâmetros opcionais são declarados com
?e podem ser omitidos na chamada:
function saudacao(nome?: string) {
return "Olá, " + (nome || "mundo") + "!";
}
- Parâmetros com valores padrão usam atribuição no parâmetro:
function saudacao(nome: string = "mundo") {
return "Olá, " + nome + "!";
}
console.log(saudacao()); // Olá, mundo!
console.log(saudacao("João")); // Olá, João!
Parâmetros rest (variáveis)
Servem para funções receberem número indefinido de argumentos:
function soma(...numeros: number[]): number {
return numeros.reduce((total, num) => total + num, 0);
}
console.log(soma(1, 2, 3, 4)); // 10
Tipo de retorno void e never
void: função que não retorna nada:
function exibirMensagem(): void {
console.log("Sistema iniciado");
}
never: função que nunca retorna, geralmente lança erro ou loop infinito:
function lancarErro(mensagem: string): never {
throw new Error(mensagem);
}
Sobrecarga de funções
TypeScript permite definir várias assinaturas para a mesma função:
function consultar(nome: string): number;
function consultar(indice: number): string;
function consultar(param: any): any {
const pessoas = ['José', 'Maria', 'Pedro'];
if (typeof param === "string") {
return pessoas.indexOf(param);
} else if (typeof param === "number") {
return pessoas[param];
}
}
console.log(consultar("Maria")); // 1
console.log(consultar(0)); // José
Funções de seta (arrow functions) com tipos
Sintaxe moderna compacta e também tipada:
const multiplicar = (x: number, y: number): number => x * y;
console.log(multiplicar(4, 5)); // 20
Exemplos práticos
// Função com parâmetro opcional e retorno tipado
function falar(frase: string, tempo?: number): string {
return `Você disse: ${frase} (tempo: ${tempo ?? 0}s)`;
}
// Função com parâmetros rest
function listarNomes(...nomes: string[]): void {
nomes.forEach(nome => console.log(nome));
}
// Uso
console.log(falar("Olá!"));
listarNomes("Ana", "Carlos", "Beatriz");
