IR AL CURSO

NICOLAS MOLINA

Tipos Avanzados y funciones en TS.pdf


Configuración del proyecto con ts-node

Dentro de nuestro proyecto, vamos a hacer el git init y generamos el gitignore con **gitignore.io** para windows, linux, mac y node.js.

También hacemos el npm init -y, instalamos typescript en el proyecto con npm i typescript -D y podemos verificar que este completamente instalado con npx tsc —version.

Luego vamos a hacer el npx tsc --init para obtener nuestro archivo tsconfig.json.

Igualmente configuramos nuestro .editorconfig de la siguiente manera para tener las mismas configuraciones que el resto del curso. Es necesario tener la extensión de editor config para que las especificaciones del archivo sean tomadas por el editor de código.

# Editor configuration, see <https://editorconfig.org>
root = true

[*]
charset = utf-8
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true

[*.ts]
quote_type = single

[*.md]
max_line_length = off
trim_trailing_whitespace = false>

Con la librería ts-node podemos correr typescript en node sin tener que transpilarlo. Para hacerlo vamos a ejecutar:

npm install -D ts-node

Luego para correr nuestro código, hacemos:

#npx ts-node ruta/archivo.ts
npx ts-node src/demo.ts

<aside> 💡 Si bien ts-node nos va a permitir ejecutar typescript en node, esto es en desarrollo, para producción vamos a tener que traspilarlo igualmente.

</aside>

Enums

Los enums nos permiten configurar un set de opciones, son parecidos a los literal types pero su uso es distinto.

Lo usamos con la palabra reservada enum y denominamos nuestro enum con el nombre en mayúsculas. Dentro de los enums, las keys las solemos escribir en mayúsculas, y los values pueden ser de tipo number o string

enum ROLES {
  ADMIN = "admin",
  SELLER = "seller",
  CUSTOMER = "customer"
}

type User = {
  username: string;
  role: ROLES;
}

const francoUser: User = {username: "Franco", role: ROLES.ADMIN}

Las ventajas son que yo puedo ver las opciones de lo que voy a asignar de forma directa a nuestras propiedades, y a su vez, en caso de que la propiedad de nuestro enum cambie en un futuro, también lo hará en su implementación.


Vamos a analizar una librería para hacer aplicaciones multiplataforma llamada **capacitor** para ver cómo hacen uso de los enums y como estos nos ayudan.