Um momento
Aula 13
Cursos / Aprenda TypeScript - Tutorial Básico Vindo do JavaScript
O Tipo never no TypeScript

Summary

# Aula sobre o Tipo Never no TypeScript

Na aula de hoje, discutiremos o tipo **Never** no TypeScript, que representa valores que nunca ocorrem. Vamos entender melhor com exemplos.

## O que é o tipo Never?

O tipo **Never** é utilizado para funções que:

1. Sempre lançam um erro.
2. Nunca terminam sua execução (loops infinitos).

### Exemplo 1: Função que Lança um Erro

A primeira função que veremos é `jogarError`, que aceita uma mensagem como parâmetro:

```typescript
function jogarError(msg: string): never {
    throw new Error(msg);
}

Essa função sempre lança um erro, portanto, seu valor de retorno é do tipo Never.

Exemplo 2: Função com Loop Infinito

A segunda função é loopInfinite, que entra em um loop infinito:

function loopInfinite(): never {
    while (true) {
        // Não faz nada, apenas loop
    }
}

Essa função nunca alcança um término, então também é do tipo Never.

Inferência do Tipo Never

O TypeScript pode inferir o tipo Never. Por exemplo, considere a função falha que chama jogarError:

function falha(): never {
    return jogarError("deu problema");
}

Neste caso, o TypeScript inferirá que o tipo de retorno da função falha é Never, mesmo que não tenha sido explicitamente declarado.

Conclusão

O tipo Never pode parecer confuso, mas é importante saber que ele existe. Se você tiver dúvidas, recomendo consultar a documentação do TypeScript.

Resumindo, duas situações onde o tipo Never é aplicável:

  • Quando uma função emite um erro constantemente.
  • Quando uma função não termina sua execução.

Até a próxima aula!

Video Transcript

Vamos lá pessoal, na esta aula vamos falar do tipo Never nunca no TypeScript. Então o tipo Never nunca no inglês, então representa o tipo de valores que não acorrem. O que significa isso? Vamos ver já já com exemplo, mas por exemplo se você tivesse uma função que jogava um Error, um Error, se a função, se você Throw novo Error, Throw new Error, Se a função sempre joga esse Error, você pode dizer que a função retorna o valor do tipo Never. Outro tipo de função que também retorna o tipo Never é uma função que não tem o fim. Nunca alcança o fim da execução da função, por exemplo uma função que tem o loop infinito, repetição infinita que não vai chegar ao fim. Então vamos dar um exemplo aqui só para você ter um ideia que é o Never, eu sei que é um pouco confuso, então vamos chamar a função aqui, função JogarError. Essa função recebe a mensagem, vou chamar MSG que tem tipo string, agora já vou adicionar o valor de retorno aqui, o tipo do retorno. Então vou só dizer definir a função Throw new Error com a mensagem, então essa função é bem simples, nome jogar Error, o que é que essa função faz? Ela faz o Throw de um novo objeto de Error, a descrição do Error é definida como argumento que foi passada ao jogar Error, que é uma string. Legal, mas essa função sempre vai jogar esse Error aqui, vai emitir esse Error. Então essa função nós podemos definir o tipo do retorno como Never, porque sempre vai dar na emissão do Error quando eu chamar a função. Então primeiro é caso. Então vamos ver outra função aqui. Vou criar uma função chamada loopInfinite, e vou dar o whileTrue e não vou fazer nada. Pode fazer alguma coisa, sei lá, mas não vou fazer nada, nesse caso. Temos uma função chamada loopInfinite que dá o loopTrue e nunca acaba. Vai ficar dando loop, loop, loop, mas não tem nenhuma instrução, não tem nada, mas nunca vai chegar ao fim da execução dessa função. Podemos associar o valor de retorno também a dois pontos Never. Tá? Tá certo? Para terminar aqui, só dizer que também o TypeScript pode inferir o tipo de retorno, por exemplo, se eu tenho uma função chamada falha e essa função retorna o quê? Eu quero que retorne uma chamada do jogarError aqui, essa função quero chamar jogarError, deu problema. Então qual é o valor de retorno da função falha? Bem, falha está retornando a chamada de jogarError com a mensagem deu problema. JogarError vai aqui em cima, chama jogarError com o deuproblema como MSG, ele vai chamar o throw newError que vai emitir um novo erro. Por causa da emissão do erro aqui, essa emissão vai bater aqui também na função falha e o TypeScript vai inferir que o tipo na verdade é Never, embora que a gente não tenha escrito aqui. Então ele vai inferir que o tipo é Never. Tá bom, então é o tipo Never, um pouco confuso, mas só para você saber que tem. Se ainda estiver confuso, eu recomendo você escrever isso e olhar na documentação e a referência, mas não se preocupe muito, mas saiba que tem esse tipo Never. Então dois casos, se uma função sempre emitir o erro, sempre emitir o erro, o valor de retorno da função será Never. Se uma função nunca acaba, por exemplo, tendo um loop infinito, sem fim, também a função terá o valor de retorno, tipo de retorno Never. Pra essa aula só e até a próxima, tchau.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: