Anuncios

Bienvenidos sean a este post, hoy veremos otro tipo primitivo.

Anuncios

Este tipo es usado para indicar instancias donde algo no deberia ocurrir. Si bien esto puede sonar confuso puede ocurrir que escribamos codigo donde esto puede suceder. Consideremos el siguiente codigo:

function siempreLanza(): never {
throw new Error("siempre suucedera");
return -1;
}
Anuncios

Esta funcion nos lanzara siempre un error, para ello utiliza un throw pero despues de esto el programa finalizara y nunca devolvera el valor -1, pero nosotros le aplicamos un tipo never por lo tanto al intentar compilarlo sucedera lo siguiente:

$ tsc never.ts
never.ts:3:2 - error TS2322: Type 'number' is not assignable to type 'never'.

3 return -1;
~~~~~~


Found 1 error in never.ts:3

$
Anuncios

Mediante never se descubrio la falla en nuestra logica dado que esa linea nunca se ejecutara y si esto es necesario para disparar un evento en nuestro codigo nunca sucedera.

Anuncios

El tipo never tiene otras utilidades tambien, veamos el siguiente codigo:

enum numero {
PRIMERO,
SEGUNDO
}
function getValor(valor: numero): string {
switch(valor) {
case numero.PRIMERO:
return "Primero";
}
let retorno: never = valor;
return retorno;
}
Anuncios
Anuncios

Primero definimos un enum con dos constantes, lo siguiente es la definicion para obtener los valores del enum que le informemos. Como pueden observar pasamos como tipo al enum anterior, le definimos el tipo que manejara (string) y luego tenemos un switch. En este switch evaluaremos el valor ingresado y usaremos un case para la primer constante (PRIMERO) donde en caso de coincidir devolvera ese mensaje. Lo siguiente es una variable llamada retorno donde aplicaremos el never y le asignaremos el valor devuelto, para finalmente devolver el valor almacenado en la variable anterior. Compilemos y veamos como es su salida:

 error TS2322: Type 'numero' is not assignable to type 'never'.
Anuncios

En este caso mediante never nos informa que no podemos usar a numero porque nunca le decimos al codigo mediante el switch como manipularr la segunda constante (SEGUNDO). Esto tiene una facil solucion y para ello debemos modificar el codigo anterior de la siguiente manera:

enum numero {
        PRIMERO,
        SEGUNDO
}

function getValor(valor: numero): string {
        switch(valor) {
                case numero.PRIMERO:
                        return "Primero";
			break;
                case numero.SEGUNDO:
                        return "Segundo";
			break;
        }
        let retorno: never = valor;
        return retorno;
}
Anuncios
Anuncios

Como dijimos la solucion es muy simple porque con agregar un segundo case donde maneja esta constante y devuelve un mensaje. Como tenemos la posibilidad de poder enviar una respuesta para las dos posibles constantes a la variable con el tipo never veremos que al momento de compilarlo no nos devolvera ningun error. Este tipo esta pensado principalmente para evitar errores que puedan pasar por el mal uso o la falta de manejo de determinados datos, los dos ejemplos que vimos anteriorrmente, y esto es muy utilizado con los unit tests, de los cuales hablaremos mucho mas adelante.

Anuncios

En resumen, hoy hemos visto never, que es, para que sirve, como se utiliza, un par de ejemplos practicos para ver sus distintas conductas y como nos ayuda, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Donación

Es para mantenimento del sitio, gracias!

$1.50