Es un tipo de dato exclusivo de TypeScript. Su traducción sería "cualquiera", pues literalmente nos permite almacenar cualquier tipo de dato en una variable:
let myDynamicVar:any;myDynamicVar =100;// numbermyDynamicVar =null;myDynamicVar ={};// ObjectmyDynamicVar ="";// string
Se recomienda no usar este tipo de dato, pues se considera mala práctica.
Importancia del Any
La utilidad de any radica cuando se quiere migrar de a pocos a TypeScript desde JavaScript, ya que incrementalmente definiríamos el tipo de dato donde sea necesario sin romper nuestro programa de golpe.
Tratar Any como un primitivo
Se pueden realizar conversiones a tipos de datos primitivos de JavaScript:
Como observamos, podemos tratar nuestra variable any como string en el primer caso y como number en el segundo. Después de esto, podemos acceder a los métodos toLowerCase() y toFixed() según el tipo de dato correspondiente.
Me encanta este meme, desmuestra el porque no debemos de usar any
De esta forma, podemos acceder a los métodos de "string" desde la variable name
desactiva?? ummm
Les comparto mis apuntes. :D
¿Qué es any?
Es un tipo de dato cualquiera, literalmente, la variable que declaremos con este tipo de dato puede contener cualquier tipo de valor. Quita el análisis de tipos.
Uso
Lo podemos usar para tener mayor flexibilidad, pero hay mejores forma para hacerlo.
Se aconseja que any no sea utilizado en proyectos ya consolidados y en equipos de desarrollo con experiencia con TypeScript, en caso de migraciones de proyectos de JavaScript a TypeScript se puede permitir el uso de any.
TypeScript
Este es de forma incremental, es decir, que para sistemas o aplicaciones en las que estamos comenzando a implementar TypeScript se puede permitir el tipo de dato any, puede ser bueno para los primeros pasos en la migración del proyecto.
CAST
Pasar de un tipo de dato a otro.
as
Podemos definir como queremos que sea tratado un tipo de dato, le decimos a TypeScript que confíe en nuestro tipado. Que trate a esa variable como ese tipo de dato que le especificamos.
(variableName as dataType)
Angle bracket
Es lo mismo que as pero con otra sintaxis.
(<dataType>variableName)
Exelente aporte!!!
Tip: Si de aquí quieres partir con bases sólidas hacia Angular, la forma de cast usada en ese framework es:
<number>myDynamicVar
Por lo que la vas a encontrar así en ejemplos y documentación.
are you ok annie?
any are you OK?
sure
are you OK, any?
Muy buena esta clase. Quizá en esta, o en alguna otra clase, hubiera sido interesante que hablaran del tipo unknow, sus usos y sus diferencias con el tipo any.
Hola, si lo hacemos solo que no en este curso, hablamos de unknow en el siguiente curso de TypeScript en el curso de Tipos Avanzados y Funciones
En mi trabajo, nos pidieron migrar todo el back de una aplicacion a TS y sin usar en alguna parte el any era muy dificil,
cuando empezamos un proyecto de cero es muy facil utar los tipados y dejar de usar any
como puedo configurar typescript para que no utilicen el any??
Hola.
¿Cómo estás?
Respondiendo a tu pregunta, no he encontrado información con respecto al uso de any en variables, pero si en funciones. Puedes usar en tu tsconfig.json:
"noImplicitAny":true
Documentación.
Luego para que te dé algún tipo de error al usar como tipo de dato any deberías usar eslint para TypeScript o tslint.
Eslint y TSlint.
Espero que te sirva.
Saludos.
:thinking: Hay que tener un pelin de cuidado con esa "falsa seguridad" que brinda TypeScript, tanto por los errores que vienen en tiempos de ejecución y tipando con any
Es paradójico la mayoría de los devs Javascript dicen que Java es un lenguaje muy feo... pero typescript es traer cosas de Java o C# a Javascript.
Y hay si dicen ohhh typescript es fantástico... en fin la hipotenusa.
ANY: Desactiva el sistema de análisis de tipo de datos. Podemos manipular el any como un tipo de dato específico a través de un cast
Dos manera de hacer un cast:
(dinamicVar as number)
(<number>dinamicVar )
(()=>{//any= cualquier cosa puede ir ahí letmyDynamicVar: any;//podemos darle cualuqier valor myDynamicVar =100; myDynamicVar =null; myDynamicVar ={}; myDynamicVar ='';})();
// El tipo "any" en TypeScript se utiliza cuando no sabemos de antemano// qué tipo de dato nos enviará el backend o una fuente externa.// Permite asignar cualquier valor, pero se pierde la seguridad de tipos.(()=>{// Declaración de una variable con tipo "any"let myDinamicVar:any;// Se pueden asignar distintos tipos de valores sin restricción myDinamicVar =[]; myDinamicVar =434; myDinamicVar =newObject();console.log({ myDinamicVar });// Asignación de un string myDinamicVar ='Hola';// Conversión explícita de tipo usando "as":// Aquí indicamos que trataremos la variable como un string,// lo que permite acceder a métodos propios de cadenas.const rta =(myDinamicVar asstring).toLocaleLowerCase();console.log(rta);// Otra forma de conversión de tipo en TypeScript:// Utilizando la sintaxis con "<tipo>".// En este caso, tratamos la variable como un número// para poder usar métodos numéricos como "toFixed". myDinamicVar =4234;const rta2 =(<number>myDinamicVar).toFixed();console.log(rta2);})();
¿El cast que menciona en:
const rta = (myDynamicVar as string).toLowerCase();
es propio de JS o solo está integrado en TypeScript?
El cast mencionado (myDynamicVar as string) es propio de TypeScript.
El cast también se puede aplicar a una variable qué sí se le declaro el tipo?
No se puede, pero si le asignas primero a la variable con unknown, ahí sí se puede hacer uso.
¿Tiene algún significado el nombre que se le asignó a la última variable? ++rta++ o ¿simplemente se le colocó ese nombre al aza?
Hola! rta es una variable de ejemplo, pudo tener cualquier nombre. Asumo que el profe le coloca rta como abreviatura de "respuesta"
Para transformar un tipo de dato a otro puedes usar eston (variable as tipoDeDato) y tambien esta la forma de (<tipoDeDato>variable)
//Caso 1myDynamicVar = "HOLA";const otherString = (myDynamicVar as string).toLowerCase();
Podemos tratar nuestra variable any como string en el primer caso y como number en el segundo. Después de esto, podemos acceder a los métodos toLowerCase() y toFixed() según el tipo de dato correspondiente.
El método toFixed() devuelve un string.
De esta manera puedo convertirlo nuevamente a número.
myVar =1212.8745;let number =Number((<number>myVar).toFixed(2));console.log("number ", number);
El método toFixed() en JavaScript se utiliza para formatear un número con una cantidad específica de dígitos después del punto decimal.