La utilidad de TS me está gustando 😃
Introducción a TypeScript
Por qué usar TypeScript
TypeScript vs. JavaScript
Configurado nuestro proyecto
Atrapando bugs
El compilador de TypeScript
Veamos el TSConfig.json
Tipos de datos primitivos
Qué es el tipado en TypeScript
Tipos inferidos
Numbers
Booleans
Strings
Arrays
Tipos de datos especiales
Any
Union Types
Alias y tipos literales
Null y Undefined
Funciones
Retorno de funciones
Objetos en funciones
Objetos como tipos
Módulos: import y export
Usando librerías que soportan TypeScript
Usando librerías que NO soportan TypeScript
Próximos pasos
Toma el Curso de Tipos Avanzados y Funciones en TypeScript
You don't have access to this class
Keep learning! Join and start boosting your career
Aliases allow us to give a name to one or several types of data as a whole. An example of how they are defined would be like this:
type UserID = string | boolean | number;
Now UserID can be used as if it were a string
, boolean
or number
data type!
let dynamicVar: UserID = "300"; dynamicVar = true; dynamicVar = 200;
The Union Types that we are going to use now will be less tedious to write, because with the Aliases we can use the same set of data types in the definition of several variables, benefiting us in writing less code.
type UserID = string | boolean | number;let dynamicVar: UserID = "300";function helloUser( userId: UserID ) { console.log(`A greeting to user with id number ${userId}`); }
Note: the word type in Aliases is a TypeScript thing.
Thanks to this we can explicitly and literally define the possible values that our variable can take. For example:
let shirtSize: "S" | "M" | "L" | "XL"; shirtSize = "M"; //CORRECTshirtSize = "S"; //CORRECTshirtSize = "qwrty"; //ERROR. Not in the options.shirtSize = "SS"; //ERROR. Too many letters.shirtSize = "m"; //ERROR. It is in lower case.
We define that the variable shirtSize
can be one of the 4 possible options of values, that these are of type string
and that they are in uppercase, therefore, if we want to assign a value that is not exactly as we declared it, TypeScript will show us an error.
We could also combine them to further facilitate the development of our program:
type Sizes = 'S' | 'M' | 'L' | ' XL';let shirtSize: Sizes; shirtSize = "M";function yourSize( userSize: Sizes ){ console.log(`Your size is ${userSize}`); }
Contributed by: Martin Alvarez.
Contributions 34
Questions 5
La utilidad de TS me está gustando 😃
(()=>{
/**
* // definiendo un tipo //!alias type
*/
type UserID = string | number | boolean;
let userId: string | number | boolean;
function greeting(parametro: UserID){
return typeof parametro === "string"
? console.log("myTextIs (+)>", parametro.toLocaleLowerCase()) : null;
};
//? Literal types
let shirtSize: "S" | "M" | "L" | "XL";
shirtSize = "S"; ////ok
shirtSize = "M"; ////ok
// shirtSize = "s"; //// wrong
//* lo mismo
type TSizes = "SM" | "ME" | "LA" | "2XL";
let Sizes: TSizes;
function greet(parametro1: UserID, parametro2: TSizes){
return typeof parametro1 === "string"
? console.log("Ropa: (+)>", `usuario: ${parametro1.toLocaleLowerCase()}`, `tamaño: ${parametro2}`)
: null;
};
greet("Nicolas","2XL");
greet("Molina","LA");
})();
Por si alguien no sabe:
camelCase (primera minúscula, y despues sigue en mayusculas)
PascalCase (todo en mayúscula)
Les comparto mis apuntes del Curso de Fundamentos de TypeScript 2020. 😄
type
.type TypeName = datatype1 | ... | datatypeN;
type TypeName = 'datatype1'| ... | 'datatypeN';
TS haciendo lo que JS debería hacer desde el principio. Me cae bien TS. 😄
TypeScript es como java y javaScript a la vez
También podemos utilizar el operador typeof
para obtener el tipo de un tipo en tiempo de compilación. Por ejemplo
let y: string = 'hello';
let z: typeof y = 'world';
Acá usamos el operador typeof
para obtener el tipo de la variable y
y asignarselo a la variable z
. Esto significa que z
será de tipo string
.
Me está gustando lo que nos ofrece TS 😄
Cerca del minuto 2:50 el profe dice que hace uso de camellCase, pero en realidad es PascalCase la forma correcta de llamarlo cuando empieza con mayuscula tengo entendido.
Aqui esta la url del github en la rama de esta clase:
https://github.com/platzi/curso-typescript-fundamentos/tree/13-step
type: herramienta súper poderosa de TS.
Literal types es cmo un enumerador de Java
realicé este condicional adicional para que al momento de ingresar la talla o tamaño “traduzca” las letras por su especificación en este caso, (pequeño, mediano,grande y extra grande),! no es la gran cosa pero quise adicionar esto.
(()=>{
type UserID = string | number | boolean;
let userId: UserID;
// Literal Types
type Sizes = “S” | “M” |“L” | “XL”;
let shirtSize: Sizes;
function greeting(userId: UserID, size: Sizes){
if(typeof userId === ‘string’ && size === ‘S’){
console.log(Usuario: ${userId.toUpperCase()} la talla de tu camisa es pequeña
);
}else if(typeof userId === ‘string’ && size === ‘M’){
console.log(Usuario: ${userId.toUpperCase()} la talla de tu camisa es mediana
);
}else if(typeof userId === ‘string’ && size === ‘L’){
console.log(Usuario: ${userId.toUpperCase()} la talla de tu camisa es grande
);
}else if(typeof userId === ‘string’ && size === ‘XL’){
console.log(Usuario: ${userId.toUpperCase()} la talla de tu camisa es extra grande
);
}else{
console.log(‘La información recibida no es correcta’)
}
}
greeting(‘1111’,‘S’);
greeting(‘1111’,‘XL’);
})();
Los alias en TS nos ayudan a crear nuestros propios tipos de datos para asi hacer nuestro codigo mas escalable.
// Sin alias
let user = string | number | Object;
function createUser(user: string | number | Object){
@code...
}
// Con alias
type UserType = string | number | Object
let user: UserType
function createUser(user: UserType){
@code...
}
Asi tenemos una fuente de verdad en nuestros tipo de datos.
.
Estos son casi lo mismo, pero aqui podemos costumizar aun mas, ya que agregamos valores especificos
type SizesType = "S" | "XS" | "M" | "L" | "XL" | "XXL"
Asi, cualquier variable con el tipo de dato SizesType
va poder elegir solo una de las opciones disponibles.
La creación de variables personalizadas es muy potente cuando trabajamos con interfaces, tal vez es muy pronto para eso pero para que lo tengan en mente (los casos de uso más comunes).
✅
Wao TypeScript le da un cachetada a JavaScript de como debe comportarse correctamente.
Permíteme explicarte sobre TypeScript (TS) y darte algunos ejemplos prácticos.
.
TypeScript es un lenguaje de programación que amplía la sintaxis de JavaScript añadiendo tipos estáticos opcionales. Proporciona herramientas para escribir código más seguro y mantenible al detectar errores durante la compilación en lugar de tiempo de ejecución.
.
Una de las características de TypeScript es la capacidad de definir alias y tipos literales. Permíteme explicar cada uno de ellos:
.
type
. Aquí tienes un ejemplo:type Punto = {
x: number;
y: number;
};
const punto: Punto = { x: 5, y: 10 };
console.log(punto.x, punto.y); // Salida: 5, 10
En el ejemplo anterior, se crea un alias llamado Punto
que representa un objeto con propiedades x
e y
de tipo number
. Luego, se declara una variable punto
con el tipo Punto
y se le asigna un objeto que cumple con esa estructura.
.
type Direcciones = 'Norte' | 'Sur' | 'Este' | 'Oeste';
function mover(direccion: Direcciones) {
console.log('Moviendo hacia', direccion);
}
mover('Norte'); // Salida: Moviendo hacia Norte
mover('Este'); // Salida: Moviendo hacia Este
mover('Arriba'); // Error: Argumento 'Arriba' no es asignable a los parámetros de tipo 'Direcciones'
En este ejemplo, se define un tipo literal llamado Direcciones
, que solo puede tener los valores 'Norte'
, 'Sur'
, 'Este'
o 'Oeste'
. Luego, se declara una función mover
que acepta un argumento de tipo Direcciones
. Al llamar a la función mover
con uno de los valores permitidos, se imprimirá el mensaje correspondiente. Sin embargo, si se proporciona un valor que no está en el conjunto permitido, TypeScript mostrará un error en tiempo de compilación.
.
Estos son solo ejemplos básicos de alias y tipos literales en TypeScript. Ambas características son muy útiles para mejorar la legibilidad y seguridad del código. ¡Espero que esto te haya ayudado a comprender mejor TypeScript!
¡Esto está buenísimo!
✍️ ✍️ ✍️
Estos Literal Types son la gota que derramaron el vaso! Me encanta TypeScript!
En TypeScript
, se encuentran comúnmente conjuntos de tipos que se repiten en un proyecto. Para evitar reescribir estos tipos, debe usar la palabra clave type
y definir el conjunto de tipos con su respectivo nombre.
// Ejemplo antes ❌
let beauty_type: string | number | boolean;
function which_type(userID: string | number | boolean) {
if (typeof userID == 'string') {
console.log('Soy string:', { userID });
} else if (typeof userID == 'number') {
console.log('Soy number:', { userID });
} else {
console.log('Soy bool:', { userID });
}
}
// Refactoring using type 👍
type CustomSet = string | number | boolean;
let beuty_type: CustomSet;
function which_type(userID: CustomSet){}
los types se parecen a las interfaces modelo, y los literal types se parecen a los enum
Siempre tuve miedo de aprender TypeScript porque me quitaba lo que amaba de JavaScript, pero ahora me arrepiendo no haber dado el salto mucho antes, TS ❤️
Wow!!! tenía pereza de aprender ts pero es realmente potente este lenguaje de programación
Me encantó esta clase. Empiezo a ver el poder de TS
Me agrada saber que se está poniendo esto del .TS
camelCase
PascalCase
kebab-case
snake_case
crear nuestro propio tipado usando =>
type UserID = string | number | boolean
o tambien se puede usar nuestro tipado personalizado usando =>
type Talle = ‘S’ | ‘M’ | 'L’
type es una palabra reservada de ts para declarar un tipado
creo que los tipados literales pueden ser muy utiles en lo que es encapsulamiento,no se creo que podria ser una buena herramienta!!!
Want to see more contributions, questions and answers from the community?