TypeScript: Różnice między 'never' a 'void', o których musisz wiedzieć!

Podczas pracy z TypeScriptem, programiści mogą spotkać się z terminami "never" i "void" podczas definiowania typów zwracanych przez funkcje. Oba typy oznaczają brak wartości zwracanej przez funkcję, ale istnieją między nimi subtelne różnice.

Masz dosyć czytania? Obejrzyj ten filmik, w którym Wojtek wytłumaczy Ci to wszystko szybko i prosto.

Wyświetl ten post na Instagramie

Post udostępniony przez Ragnarson (@ragnarsoncom)

"Void" to typ, który reprezentuje brak zwracanej wartości przez funkcję. Oznacza to, że funkcja zostanie wykonana, ale nie zwróci żadnych danych. Jest to przydatne, gdy chcemy wykonać jakieś działanie poboczne, takie jak zalogowanie wiadomości lub aktualizacja bazy danych, bez zwracania żadnych danych.

Z drugiej strony, "never" to typ, który reprezentuje funkcję, która nigdy nie zakończy działania. Oznacza to, że funkcja albo zgłosi błąd, albo wpadnie w nieskończoną pętlę. Jest to przydatne, gdy chcemy sygnalizować, że funkcja nigdy nie zostanie normalnie wykonana.

Przykłady:

W powyższym przykładzie logMessage to funkcja, która loguje wiadomość do konsoli i nic nie zwraca, więc jej typ zwracany to void. throwError to funkcja, która zgłasza błąd, więc jej typ zwracany to never. Na koniec infiniteLoop to funkcja, która wpada w nieskończoną pętlę i nigdy się z niej nie wydostaje, więc jej typ zwracany również to never.

Podsumowując, "void" jest używany, gdy funkcja wykonuje działanie poboczne i nie zwraca żadnych danych, natomiast "never" jest używany, gdy funkcja nigdy nie zostanie normalnie wykonana. Aby poprawnie ich używać w kodzie TypeScript, trzeba odpowiednio rozumieć różnice między tymi funkcjami.