Aula 13
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: