Em uma das versões anteriores do TypeScript foi adicionado um type chamando never. Esse type indica que algo nunca deve ocorrer.
É isso mesmo, nós temos um type no TypeScript chamado never, que indica que uma função nunca deve retornar algo e que é diferente do type void.
Mas calma, vamos entender ele melhor através de alguns exemplos práticos abaixo.
Nós podemos utilizar o type never em funções sem retorno:
function carregandoGame(): never { while (true) { console.log("Carregando todos processos de um game!"); } }
Essa função acima é comum no desenvolvimento de games onde nos temos um método que funciona como um loop infinito.
(calma, eu irei explicar mais abaixo a diferença entre never x void)
Em funções com exception
Testando essa função
verificandoTipo("teste String"); //Ok
verificandoTipo(10); //Ok
let ativo = true;
verificandoTipo(ativo); // retorna uma exception
Print do retorno na console:
No exemplo anterior nós temos uma função que recebe um type Union (string e number), que deve retornar um boolean. Caso seja passado um outro valor diferente de string e number, a chamada entra em uma outra função chamada fail que irá retornar uma exception.
Agora, qual é a diferença entre void e never?
O type void pode receber o valor null ou undefined e o type never não pode receber nenhum valor. Abaixo você tem um exemplo demonstrando os os dois types como variáveis:
E para finalizar, quando não especificado um type nas funções do TypeScript, ele retorna um valor undefined. Abaixo você tem um exemplo demonstrando esse cenário:
function teste(): void {
console.log('função void!')
}
let testeFuncaoVoid: void = teste();//função void!
console.log(testeFuncaoVoid); // undefined
Bom, a ideia desse artigo era apresentar mais um dos types do TypeScript. Espero que tenham gostado e até a próxima galera 😉