Menu
Coddy logo textTech

O Tipo 'never'

Parte da seção Introdução ao TypeScript do Journey de JavaScript da Coddy. Lição 70 de 73.

O tipo never representa valores que nunca ocorrem. Isso pode parecer confuso no início, mas na verdade é bastante lógico quando você pensa em certos cenários em seu código.

O tipo never é mais comumente usado para funções que nunca retornam normalmente.

Isso inclui funções que sempre lançam um erro ou contêm loops infinitos:

function throwError(message: string): never {
  throw new Error(message);
}

function infiniteLoop(): never {
  while (true) {
    // Este loop nunca termina
  }
}

Ao contrário de void, que indica que uma função não retorna um valor significativo, never indica que a função nunca chega ao seu ponto final. A execução ou para devido a um erro sendo lançado ou continua indefinidamente.

challenge icon

Desafio

Fácil

Crie uma função chamada throwError que demonstre o tipo de retorno never sempre lançando um erro e nunca retornando normalmente.

A função deve:

  • Receber um parâmetro message do tipo string
  • Lançar um novo Error com a mensagem fornecida
  • Ter um tipo de retorno explícito de never

Crie uma segunda função chamada handleOperation que:

  • Receba dois parâmetros: operation do tipo string e value do tipo number
  • Retorne value * 2 se a operação for "double"
  • Retorne value / 2 se a operação for "half"
  • Chame throwError com a mensagem "Invalid operation: [operation]" para qualquer outra operação
  • Tenha um tipo de retorno explícito de number

Teste suas funções com as seguintes operações:

  • Chame handleOperation("double", 5) e imprima o resultado
  • Chame handleOperation("half", 8) e imprima o resultado
  • Chame handleOperation("triple", 3) e imprima o resultado (isso lançará um erro)

Crie casos de teste adicionais:

  • Chame handleOperation("double", 15) e imprima o resultado
  • Chame handleOperation("half", 20) e imprima o resultado

Experimente você mesmo

// TODO: Escreva seu código aqui
// Crie a função throwError com o tipo de retorno never
// Crie a função handleOperation com o tipo de retorno number

// Teste as funções com blocos try-catch
try {
    console.log(handleOperation("double", 5));
} catch (error) {
    console.log(`Error: ${(error as Error).message}`);
}

try {
    console.log(handleOperation("half", 8));
} catch (error) {
    console.log(`Error: ${(error as Error).message}`);
}

try {
    console.log(handleOperation("triple", 3));
} catch (error) {
    console.log(`Error: ${(error as Error).message}`);
}

try {
    console.log(handleOperation("double", 15));
} catch (error) {
    console.log(`Error: ${(error as Error).message}`);
}

try {
    console.log(handleOperation("half", 20));
} catch (error) {
    console.log(`Error: ${(error as Error).message}`);
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Introdução ao TypeScript

Pratique por conta própria: Compilador de JavaScript online