Deja de usar el tipo de dato Any en Typescript

mezagini

Daniel Mezagini

Posted on April 16, 2022

Deja de usar el tipo de dato Any en Typescript

Cuando utilizamos Typescript es para: tener un constante análisis del código que vamos desarrollando, tener un tipado fuerte, trabajar con un lenguaje de alto nivel, disminuir la cantidad de bugs que solemos generar.

Pero en el transcurso del tiempo en desarrollo de lo que estamos creando, nos encontramos en ocasiones con la necesidad o comodidad de colocar tipos any a variables. Y esto desactiva esa funcionalidad tan querida de TS de estar verificando nuestro código; vuelves a estar trabajando con JS puro cuando se trata de esa variable y lo dejas vulnerable a bugs.

Hoy aprendí que es mejor utilizar el type unknown a usar any. Y este es el por qué...

Cuando declaras una variable de tipo any. Puedes asignarle cualquier valor de cualquier tipo.



let anyVar: any;
anyVar = true;
anyVar = undefined;
anyVar = null;
anyVar = 1;
anyVar = 'vale';
anyVar = [];
anyVar = {};


Enter fullscreen mode Exit fullscreen mode

Esa variable será tratada como si de JS puro se tratara.

Ej. Si anyVar almacena un texto. Puedes ejecutar un toUpperCase() en el momento que desees sin que te salte alguna alerta. (porque estás trabajando con JS tal cuál). El problema es que si deseas ejecutar un método doSomething() que es un método inexistente, tampoco saltará un error, porque no se verificará ese código.

Aquí entra la alternativa a usar para evitar esto y prevenir futuros bugs.

Unknown Type


Este tipo de dato también puede inicializarse con datos de cualquier tipo.



let unknownVar: unknown;
unknownVar = true;
unknownVar = undefined;
unknownVar = null;
unknownVar = 1;
unknownVar = 'vale';
unknownVar = [];
unknownVar = {};


Enter fullscreen mode Exit fullscreen mode

Sin embargo, cuando quieras tratar un tipo Unknown type con cualquier otro, tendrás que verificarlo primero antes de poder usarlo o te saltarán alertas.

Image description
Ej. toUpperCase() es un método de string. Pero al ser de tipo unknown. No puedes tratarlo como string sin antes una verificación de tipo. Cosa que con any no pediría, simplemente intentaría ejecutar ese método a ciegas, y a expectativa de que sí sea un string.

Ahora, el método doSomething tampoco existe. Por lo que nos marca un error. Cosa que no sucede si fuera de tipo any. Intentaría ejecutarlo aunque no existe y eso ocasionaría un error en tiempo de ejecución.

Entonces, ¿cómo ejecutar el método toUpperCase()?

Tenemos que verificar que sí es un string el tipo de dato que contiene la variable unknown



if (typeof unknownVar === 'string') {
    unknownVar.toUpperCase();
}


Enter fullscreen mode Exit fullscreen mode

Se verifica con la función typeof y dentro de ese scope se podrá ejecutar la función, sin problema alguno.

Usar el tipo unknown nos ayuda a minimizar futuros errores, siempre obligándonos a verificar que el tipo de dato que contiene dentro esa variable unknown es del tipo de dato como queremos tratarla.

Siempre que puedas evitar usar any, hazlo.

Notas del Curso de Typescript: Tipos Avanzados y Funciones - @Platzi

💖 💪 🙅 🚩
mezagini
Daniel Mezagini

Posted on April 16, 2022

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related