Aula 5

TypeScript

Funções e Funções Genéricas

Funções em TypeScript

Criação de funções

function saudacao(nome: string): string {
  return `Olá, ${nome}!`;
}

Passagem de parâmetros

Parâmetros obrigatórios

function somar(a: number, b: number): number {
  return a + b;
}

Parâmetros opcionais

function apresentar(nome: string, idade?: number): string {
  return idade 
    ? `${nome}, ${idade} anos` 
    : nome;
}

Parâmetros com valores padrão

function cumprimentar(nome: string = "visitante"): string {
  return `Olá, ${nome}!`;
}

Número indefinido de parâmetros (Rest parameters)

function somarTudo(...numeros: number[]): number {
  return numeros.reduce((total, n) => total + n, 0);
}

Valor de retorno

function dobro(x: number): number {
  return x * 2;
}

Sobrecarga de funções

function mostrar(valor: number): void;
function mostrar(valor: string): void;
function mostrar(valor: any): void {
  console.log(valor);
}

mostrar("Oi");
mostrar(10);

Tipo de função

Definição

type Operacao = (a: number, b: number) => number;

Criação de variáveis com tipo de função

let multiplicar: Operacao = (x, y) => x * y;

Função como parâmetro

function executarOperacao(a: number, b: number, operacao: Operacao): number {
  return operacao(a, b);
}
console.log(executarOperacao(4, 5, multiplicar)); // 20

Funções anônimas

const dividir = function (a: number, b: number): number {
  return a / b;
};

Funções arrow

const subtrair = (a: number, b: number): number => a - b;

Funções Genéricas

Funções que usam generics para trabalhar com tipos variados.

Exemplo 1: Função que recebe e retorna o mesmo tipo

            
function echo<T>(arg: T): T {
  return arg;
}
            
          

Exemplo 2: Função genérica que concatena dois arrays do mesmo tipo

            
function concatArrays<T>(a: T[], b: T[]): T[] {
  return a.concat(b);
}
            
          

Exemplo 3: Função genérica que troca os valores de uma tupla

            
function swap<T, U>(tuple: [T, U]): [U, T] {
  return [tuple[1], tuple[0]];
}