Explicar el propósito de nunca escribir en TypeScript

En Typescript , cuando estamos seguros de que una situación en particular nunca sucederá, usamos el tipo nunca. Por ejemplo, supongamos que construye una función que nunca regresa o siempre lanza una excepción, entonces podemos usar el tipo nunca en esa función. Nunca es un tipo nuevo en TypeScript que denota valores que nunca se encontrarán.

Ejemplo 1: el nulo se puede asignar a void pero nulo no se puede asignar a variables de tipo nunca, ni se puede asignar ningún otro tipo, incluido cualquiera.

Javascript

let variable: void = null;
let variable1: never = null;      // error
let variable2: never = 1;         // error
let variable3: never = "geek";     // error
let variable4: never = true;     // error

Salida: No se puede asignar ningún valor de ningún otro tipo a una variable de tipo nunca.

error TS2322: Type 'null' is not assignable to type 'never'  ...
error TS2322: Type 'number' is not assignable to type 'never' ...
error TS2322: Type 'string' is not assignable to type 'never' ...
error TS2322: Type 'boolean' is not assignable to type 'never' ...

Ejemplo 2: Usar nunca escribir en una función

Una función que devuelve «nunca» nunca debe tener un punto final, un bucle infinito es un ejemplo de una situación en la que el programa nunca deja de ejecutarse. En el siguiente código hay un bucle for sin principio ni final. no obtenemos nada como salida.

Javascript

function infiniteLoop(): never {
  for (;;) {}
}
  
// Function call
infiniteLoop();

La función saludar() nunca deja de ejecutarse, muestra continuamente «hola» y no devuelve nada, por lo que nunca se usa el tipo.

Javascript

function greet(): never {
  while (true) {
    console.log("hello");
  }
}
  
// Function call
greet();

Salida: Como se discutió, el tipo nunca debe usarse solo cuando las funciones no devuelven nada o nunca dejan de ejecutarse, en la salida hello se repite infinitamente. 

hello
hello
hello
......

Ejemplo 3: usar el tipo nunca en una función que genera una excepción

En el siguiente código , la función throwTypeerror() no devuelve nada, pero genera un error, por lo que el tipo de función nunca es. el tipo de func() tampoco es nunca, ya que llama a la función throwTypeerror() que no devuelve nada.

Javascript

function throwTypeerror(str: string): never {
  throw new TypeError(str);
}
  
// Return type of this function is "never"
function func() {
  return throwTypeerror("a type error is being raised");
}
  
// Function call
func()

Salida: Func() llama a la función throwTyperror() , esa función arroja un error sin devolver nada, por lo que ambas funciones son del tipo nunca.

throw new TypeError(str);
TypeError: a type error is being raised

Referencia: https://www.typescriptlang.org/docs/handbook/basic-types.html#never

Publicación traducida automáticamente

Artículo escrito por isitapol2002 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *