Sobes.tech
Middle

¿Qué es el tipo Never en el lenguaje Dart?

sobes.tech AI

Respuesta de la IA

El tipo Never es un indicador de que una expresión nunca terminará con éxito. Se usa para funciones y métodos que o lanzan una excepción o entran en un ciclo infinito.

Ejemplos de uso:

  • Función que lanza una excepción:

    Never _throwError(String message) {
      // Lanza una excepción, la función nunca devuelve un valor
      throw StateError(message);
    }
    
  • Función con un ciclo infinito:

    Never _infiniteLoop() {
      // Entra en un ciclo infinito, la función nunca termina
      while (true) {
        // Hacer algo
      }
    }
    

La principal ventaja de Never es que ayuda al compilador a entender que el código después de la llamada a dicha función o método no es alcanzable, lo que permite realizar análisis estático para detectar errores potenciales, como código inalcanzable y manejo incorrecto de errores.

A diferencia de void, que indica que la función no devuelve valor (pero termina con éxito), Never indica que la función nunca terminará en principio.

// Función que devuelve void (termina con éxito, pero sin valor)
void doSomething() {
  print('Haciendo algo');
}

// Función que devuelve Never (nunca termina con éxito)
Never crashAndBurn() {
  throw '¡Oh no!';
}

El tipo Never es un tipo inferior (bottom type), es decir, es un subtipo de cualquier otro tipo. Esto permite usar una función que devuelve Never en lugares donde se espera cualquier otro tipo.