No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Tipos inferidos

8/24
Recursos

TypeScript puede inferir el tipo de dato de una variable a pesar de no haberlo declarado expl铆citamente.

Inferencia de tipos

A partir de la inicializaci贸n de la variable TypeScript infiere el tipo que ser谩 a lo largo del c贸digo y este no puede variar. Por ejemplo:

let myName = "Victoria";

Si bien no indicamos el tipo de dato como se har铆a de esta manera:

let myName: string = "Victoria";

TypeScript infiere que la variable myName ser谩 del tipo string y en adelante no podr谩 tomar un valor que no sea de este tipo de dato.

myName = 30; 
//Nos se帽alar谩 como error pues se le quiere asignar un n煤mero a una variable de tipo string.

En Visual Studio Code puedes obtener autocompletado teniendo sugerencias seg煤n el tipo de dato que sea la variable:
Autocompletado en Visual Studio Code

Nombres de variables iguales

TypeScript te indicar谩 como error aquellas variables con el mismo nombre a pesar de estar en archivos distintos. Esto no suceder谩 en entornos preconfigurados como por ejemplo Angular o React, ya que estos trabajan de forma modular o tienen un alcance (scope) para cada variable.

Si deseas trabajar con los mismos nombres de variables en diferentes archivos, puedes crear una funci贸n an贸nima autoejecutada:

( () => {
    let myName = "Victoria";
})();

Lo mismo por cada variable que desees tener el mismo nombre (myName para este ejemplo) deber谩s crear este tipo de funci贸n para evitar que te den estas advertencias.

Contribuci贸n creada por: Mart铆n 脕lvarez.

Aportes 18

Preguntas 3

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

En el anterior curso 2020 de TS el profesor expostaba un objeto vacio para poder quitar los errores del editor:

export {}

Sin embargo, nunca entend铆 bien el porqu茅, aunque tenga m谩s l铆neas de c贸digo, creo que es mejor practica la que se ve en esta clase.

Inmediately Invoked Function Expression (IIFE).

Tambi茅n se pueden usar para simular un 鈥榯op level await鈥:

(async () => { 
	...
	const students = await window.fetch(...)
	...
})() 

De esta clase podemos concluir:

  • TS usa tipos inferidos para 鈥渁signar鈥 tipos de datos a variables sin que se las tengamos que asignar de manera explicita
  • Entre los beneficios de usar TS esta el hecho de que tenemos los metodos usados a cada tipo de datos, como en el caso de una variable 鈥渟tring鈥, podemos acceder a el m茅todo toLowerCase de manera mas r谩pida
  • Al no tener aun modularizacion, TS nos alerta de que ciertas variables ya han sido declaradas, esto lo podemos prevenir con funciones an贸nimas autoejecutadas

Les recomiendo la extensi贸n Error Lens en VSCode.
Te permite ver los errores en tiempo real y te indica en la misma l铆nea, en donde ten茅s el error y la descripci贸n del mismo.
Ejemplo:

una funci贸n an贸nima auto-ejecutada :

(( ) => {

}) ( );

No hay ninguna ventaja de utilizar un arrow function en un **IIFE **(Immediately Invoke Function Expression) por lo cual usar una funcion normal me parece mas correcto

(function() {

})()

Les comparto mis apuntes. 馃槃

Tipo de dato inferido

Sin necesidad de especificar el tipo de dato, TypeScript supone o deduce el mismo con el valor que le asignamos a la variable.

Es recomendable usarlo por encima del tipo de dato explico cada vez que sea posible.

Variables (let y var)

En TypeScript nos dice el tipo de dato que tienen que recibir est谩s variables, ya que como son variables pueden solamente cambiar a lo largo del programa pero solo por ese tipo de dato.

Constantes (const)

Aqu铆 TypeScript no nos dice tipo de dato de nuestra constante, porque como su nombre lo indica, la misma no puede cambiar a lo largo del programa por otro valor.

Funciones an贸nimas autoejecutable

((parameters) => {
		statements
})();

Ese Tipo de funci贸n es llamado Funci贸n IFEE (Immediately-invoked function expressions y este tipo de funci贸n se manda a llamar por si sola. Se puede escribir como arrow function o function declaration

(() => {
  
})()
(function() {
  
})()

Les comparto otras formas de crear funciones an贸nimas auto-ejecutables

Forma cl谩sica:

(function(){
  console.log('Versi贸n cl谩sica');
})();

Con arrow function:

(()=>{
  console.log('Versi贸n arrow function')
})();

Crockford --> Creador de JSON:

((function(){
  console.log('Versi贸n Crockford');
})());

Forma Unaria:

+function(){
  console.log('Forma unaria');
}();

Algo curioso que not茅, o que percibo, es que la inferencia de tipo, cuando se declara un valor let, Typescript te advierte del cambio, no tanto de tipo, sino de valor, como si quisiese tratarlo como constante de cierta forma.

Tambi茅n es curioso que al declarar constantes, el editor no te sugiere el tipo asignado en el tooltip.

muy interesante, siempre escuchaba sobre TS pero no habia tenido la oportunidad ni la necesidad de usarlo, pues definitivamente me esta gustando TS鈥

Immediate-Invoked Function Expression (()=>{})()

Y yo que no entendia porque seguia tirandome errores, hasta que conoci las funciones anonimas autoejecutadas

TIPADO INFERIDO: Typescript deduce el tipado por default, es decir que si no colocamos el tipado tipescript lo hace por nosotros a trav茅s de su motor de inferencia.

Esas funciones se les conoce como IIFE (Immediately Invoked Function Expression)
Ac谩 te dejo la documentaci貌n

a example :3

let myProductName = 'producto'; // tipo inferido (ya es una variable de strings)

let myProductPrice = 12; // tipo inferido (ya es una variable de tipo number)

 myProductName = 2; // ERROR! NO SE PUEDE ASIGNAR UN NUMERO A UNA VARIABLE DE TIPO STRING

myProductName = 'cambio'; // BIEN :)

 myProductPrice = 'hola'; // ERROR! NO SE SE LE PUEDE ASIGNAR UN STRING A UNA VARIABLE DE TIPO NUMBER

myProductPrice = 22; // BIEN :)
//* Funci贸n an贸nima autoejecutada

(() => {
  let myProductName = 'Product 1'
  let myProductPrice = 123

  //!myProductName = 123 no podemos hacer esto
  myProductName = 'change'
  myProductName.toUpperCase()

  myProductPrice.toString()

  const myProductStock = 1000
  //! myProductStock = 2000; no podemos hacerlo porque es una constante

})();

//* Hacemos esto para poder usar los mismos nombres de variables en otros archivos de TS.