Czym jest typ Never w języku Dart?
sobes.tech AI
Odpowiedź od AI
Typ Never jest wskaźnikiem na to, że wyrażenie nigdy nie zakończy się sukcesem. Jest używany dla funkcji i metod, które albo rzucają wyjątek, albo wchodzą w nieskończoną pętlę.
Przykłady użycia:
-
Funkcja rzucająca wyjątek:
Never _throwError(String message) { // Rzuca wyjątek, funkcja nigdy nie zwraca wartości throw StateError(message); } -
Funkcja z nieskończoną pętlą:
Never _infiniteLoop() { // Wchodzi w nieskończoną pętlę, funkcja nigdy się nie kończy while (true) { // Robić coś } }
Główna zaleta Never polega na tym, że pomaga kompilatorowi zrozumieć, że kod po wywołaniu takiej funkcji lub metody jest nieosiągalny, co umożliwia statyczną analizę w celu wykrycia potencjalnych błędów, takich jak nieosiągalny kod i nieprawidłowe obsługi błędów.
W przeciwieństwie do void, które oznacza, że funkcja nie zwraca wartości (ale kończy się pomyślnie), Never oznacza, że funkcja nigdy nie zakończy się w zasadzie.
// Funkcja zwracająca void (kończy się pomyślnie, ale bez wartości)
void doSomething() {
print('Robię coś');
}
// Funkcja zwracająca Never (nigdy nie kończy się pomyślnie)
Never crashAndBurn() {
throw 'O nie!';
}
Typ Never jest typem dolnym (bottom type), czyli jest podtypem każdego innego typu. Pozwala to na użycie funkcji zwracającej Never w miejscach, gdzie oczekiwany jest dowolny inny typ.