CursosEmpresasBlogLiveConfPrecios

Unión de Tipos, Alias y Tipos Literales

Clase 17 de 32 • Curso de TypeScript 3

Clase anteriorSiguiente clase

Contenido del curso

Introducción a TypeScript
  • 1
    El lenguaje de programación TypeScript

    El lenguaje de programación TypeScript

    08:43
  • 2
    Instalación de herramientas para TypeScript

    Instalación de herramientas para TypeScript

    05:47
  • 3

    Instalación de herramientas en Windows

    01:05
  • 4
    Navegación y refactorización

    Navegación y refactorización

    04:37
Entorno de Desarrollo
  • 5
    El compilador de TypeScript

    El compilador de TypeScript

    08:00
  • 6
    El archivo de configuración de TypeScript

    El archivo de configuración de TypeScript

    07:22
  • 7
    Mi primer proyecto TypeScript

    Mi primer proyecto TypeScript

    05:09
Tipos en TypeScript
  • 8
    Tipado en TypeScript

    Tipado en TypeScript

    01:37
  • 9
    Number, Boolean y String

    Number, Boolean y String

    14:09
  • 10
    Any

    Any

    08:28
  • 11
    Void y never

    Void y never

    15:58
  • 12
    null y undefined

    null y undefined

    11:03
  • 13
    Object

    Object

    07:44
  • 14
    Array

    Array

    09:44
  • 15
    Tupla

    Tupla

    11:25
  • 16
    Enum

    Enum

    10:59
  • 17
    Unión de Tipos, Alias y Tipos Literales

    Unión de Tipos, Alias y Tipos Literales

    11:58
  • 18
    Aserciones de tipo

    Aserciones de tipo

    11:26
  • 19
    Funciones en TypeScript

    Funciones en TypeScript

    14:19
  • 20
    Resumen

    Resumen

    06:54
Tipos Personalizados
  • 21
    Interfaces

    Interfaces

    10:18
  • 22
    Interfaces: propiedades opcionales

    Interfaces: propiedades opcionales

    10:57
  • 23
    Extensión de interfaces

    Extensión de interfaces

    10:54
  • 24
    Clases

    Clases

    14:02
  • 25
    Clases públicas y privadas

    Clases públicas y privadas

    15:10
  • 26
    Métodos Get y Set

    Métodos Get y Set

    08:46
  • 27
    Herencia de clases y propiedades estáticas

    Herencia de clases y propiedades estáticas

    17:41
  • 28
    Resumen

    Resumen

    13:24
Módulos
  • 29
    Principios de responsabilidad única

    Principios de responsabilidad única

    15:03
  • 30
    Resolviendo módulos

    Resolviendo módulos

    10:04
  • 31
    Webpack y agrupación de Módulos

    Webpack y agrupación de Módulos

    14:02
Cierre
  • 32
    Cierre

    Cierre

    00:57
    David Vargas Domínguez

    David Vargas Domínguez

    student•
    hace 6 años

    Una función en Typescript puede recibir como parámetro diferentes tipos predefinidos usando Union Types

    function whatTime(hour: number | string, minute: number | string) : string { return hour+':'+minute; } whatTime(1,30) //'1:30' whatTime('1',30) //'1:30' whatTime(1,'30') //'1:30' whatTime('1','30') //'1:30'

    Usando Alias podemos reducir la cantidad de código en los tipos predefinidos.

    type Hours = number | string; type Minutes = number | string; function whatTime(hour: Hours, minute: Minutes) : string { return hour+':'+minute; }
      Hildegar Medina

      Hildegar Medina

      student•
      hace 4 años

      En ese caso en vez de definir dos tipos con la misma condición, sería interesante englobarlas en una sola:

      type Time = number | string; function whatTime(hour: Time, minute: Time) : string { return hour+':'+minute; }
    Boris Vargas Paucara

    Boris Vargas Paucara

    student•
    hace 6 años
    /* En TypeScript se puede definir una variable con multiple tipos de datos: Union Type * - Se usa el simbolo de pipe ('|') entre los tipos */ export {} // 10, '10' let idUser: number | string; idUser = 10; idUser = '10'; // Buscar username dado un ID function getUsernameById(id: number | string) { // logica de negocio, find the user return 'luixaviles'; } getUsernameById(20); getUsernameById('20'); /* Alias de Tipos: El alias se puede aplicar tambien a un conjunto o combinacion de tipos */ // alias de tipos: TS type IdUser = number | string; type Username = string; let idUser: IdUser; idUser = 10; idUser = '10'; // Buscar username dado un ID function getUsernameById(id: IdUser): Username { // logica de negocio, find the user return 'luixaviles'; } getUsernameById(20); getUsernameById('20'); /* Tipos literales */ // 100x100, 500x500, 1000x1000 type SquareSize = '100x100' | '500x500' | '1000x1000'; // string | number // let smallPicture: SquareSize = '200x200'; // --> Error let smallPicture: SquareSize = '100x100'; let mediumPicture: SquareSize = '500x500';
    Jesus Federico David Herrera

    Jesus Federico David Herrera

    student•
    hace 5 años
    enum PicturesSizes { small = '75x75', medium = '240x180', large = '500x375', extraLarge = '1024x768', superLarge = '3072x2304' } const picturaSmall: PictureOrientation = PictureOrientation.Landscape; type PhotoSizesType = '75x75' | '240x180' | '500x375' | '1024x768' | '3072x2304' const medium : PhotoSizesType= '240x180';```
      Andrés Felipe Eslava Zuluaga

      Andrés Felipe Eslava Zuluaga

      student•
      hace 5 años

      Gracias... Tú código me ayudo a comprender que enum puede tomar esos valores. Pensaba que por ser una enumeración, solo servía para números. También me copié de los valores de resolución = )

      Sebastian SS

      Sebastian SS

      student•
      hace 5 años

      Excelente muestras como darle solución al reto con enum y literal types. Buen ejercicio

    Johan Garzon

    Johan Garzon

    student•
    hace 4 años

    Si no entendiste Tipos Lirerales, piensa en ello como limitar el contenido de la variable. Así como un boolean puede contener sólo true ó false, puedes crear tu propio tipo de variable con el contenido que necesites.

    Jose Daniel Barría Reyes

    Jose Daniel Barría Reyes

    student•
    hace 6 años

    Union de tipos. permite definir una variable con multiples tipos de datos. Se usa el pipe para unirlos | .

    let idUser = number | string; idUser = 10; idUser = '10';

    tambien sirve para los argumentos de una funcion.

    Alias de tipos: Permite crear alias como nuevo nombre para un tipo. Usa la palabra reservada type.

    type IdUser = number | string; let idUser : IdUser; idUser = 10; idUser = '10';

    TIpos literales: Una variable con un tipo literal puede ocntener unicamente uina cadena del conjunto. Se usan cadenas como 'tipos', combinados con el simbolo pipe | entre ellos. Yo lo veo como una forma de enum.

    type SquareSize = '100x100' | '500x500' | '1000x1000'

    Este editor es una basura desde hace años. Si por error paso a la siguiente clase o refresco la pagina, pierdo todo lo que había escrito.

    Miguel Angel Reyes Moreno

    Miguel Angel Reyes Moreno

    student•
    hace 5 años

    Unión de Tipos, Alias y Tipos Literales

    Unión de Tipos

    • En TypeScript se puede definir una variable con múltiples tipos de datos: Union Type
    • Se usa el símbolo de pipe | entre los tipos

    Alias de Tipos

    • TypeScript permite crear un alias como nuevo nombre para un tipo
    • El alias se puede aplicar también a un conjunto de combinación de tipos
    • Se usa la palabra reservada type

    Tipos Literales

    • Una variable con un tipo literal puede contener únicamente una cadena del conjunto
    • Se usan cadenas como "tipos", combinados con el símbolo de pipe | entre ellos
    export {} //* Por ejemplo, tenemos usuarios que tienen un ID numérico o de tipo string 10, '10' let idUser: number | string //* Aceptará strings y number idUser = 10 idUser = '10' //* Buscar username dado un ID function getUserNameById(id: number | string) { //* Lógica de negocio, find the user return id } //* No da errores 😄 getUserNameById(10) getUserNameById('10') //-------------------------------------------------------------------------------------------- //* Alias de tipos de TS type IdUser = number | string type UserName = string let userID: IdUser idUser = 10 idUser = '10' //* Buscar username dado un ID function getUserName(id: IdUser): UserName { //* Lógica de negocio, find the user return 'Mike' } //---------------------------------------------------------------------------------------------------- //* Tipos literales //* Por ejemplo, sólo aceptamos fotos de 100x100, 500x500 y 1000x1000 type SquareSize = '100x100' | '500x500' | '1000x1000' //! let smallPicture: SquareSize = "200x200" //!Esto da un error, no está incluido ese valor en SquareSize let smallPicture: SquareSize = "100x100" let mediumPicture: SquareSize = "500x500" let bigPicture: SquareSize = "1000x1000" console.log('small Picture: ', smallPicture) console.log('medium Picture: ', mediumPicture) console.log('big Picture: ', bigPicture)
    Julian Carelli

    Julian Carelli

    student•
    hace 5 años

    Reto completado ;D

    Captura de pantalla de 2021-01-05 18-34-03.png
      Moisés Manuel Morín Hevia

      Moisés Manuel Morín Hevia

      student•
      hace 5 años

      Qué bien ! Eres increíble !

    Nicolas David Pastran Zamora

    Nicolas David Pastran Zamora

    student•
    hace 5 años

    ¿ Es posible definir los tipos literales usando expresiones regulares ?

      Jorge Cruz Perez

      Jorge Cruz Perez

      student•
      hace 5 años

      Interesante la pregunta, pero al menos por como la uso para definir laos tamaños de un cuadrado, no veo la relación, ya que en square definir tipos predefinidos, y con una regex englobas valores, no se si me explique, a menos que detalles un ejemplo de como quieres usarlas, saludos :)

    Leonardo de los angeles Espinoza Hernandez

    Leonardo de los angeles Espinoza Hernandez

    student•
    hace 6 años

    Por convención se usa UpperCamelCase cuando se declaran Alias?

      Enrique Tecayehuatl

      Enrique Tecayehuatl

      student•
      hace 6 años

      También es conocido como PascalCase, y se usa especialmente cuando declaras el nombre de clases, interfaces, etc.

      Leonardo de los angeles Espinoza Hernandez

      Leonardo de los angeles Espinoza Hernandez

      student•
      hace 6 años

      Entiendo, muchas gracias @kikekeys :D

    Juan David González Rodríguez

    Juan David González Rodríguez

    student•
    hace 5 años
    type PhotoSizes = '75x75' | '240x180' | '500x375' | '1024x768' | '3072x2304' type FuncString = string function differentsPhotos(name: FuncString): FuncString{ let square: PhotoSizes = '75x75' let small: PhotoSizes = '240x180' let medium: PhotoSizes = '500x375' let big: PhotoSizes = '1024x768' let veryBig: PhotoSizes = '3072x2304' return ` ${name} square: ${square} small: ${small} medium: ${medium} big: ${big} veryBig: ${veryBig} ` } console.log(differentsPhotos('Juan'))
    Juan square: 75x75 small: 240x180 medium: 500x375 big: 1024x768 veryBig: 3072x2304
    Raphael Martinez

    Raphael Martinez

    student•
    hace 5 años

    Puede ser similar usar un enum a un tipo literal ?

      David Prieto Cornejo

      David Prieto Cornejo

      student•
      hace 5 años

      En realidad, nada te lo impide. Incluso, en el caso del ejemplo, las medidas de las fotos pueden ser entendidas como constantes y a mi gusto sería más legible.

      enum PicturesSize { SMALL = '100x100', MEDIUM = '500x500', LARGE = '1000x1000' } let newPictureSize: PicturesSize = PicturesSize.SMALL;
      Moisés Manuel Morín Hevia

      Moisés Manuel Morín Hevia

      student•
      hace 5 años

      Sí es similar pero si quieres cambiar el tipado es mejor hacerlo de esta forma (: Todo es con base a las necesidades de tu proyecto.

    Guillermo Castaño Vèlez

    Guillermo Castaño Vèlez

    student•
    hace 5 años

    He visto que el profesor siempre para definir una función usa la palabra reservada function. En ts no podemos usar arrow functions?

      Carlos Eduardo Gomez García

      Carlos Eduardo Gomez García

      teacher•
      hace 5 años

      Sí se puede 👇

      https://www.tutorialsteacher.com/typescript/arrow-function

      Tal vez solo no quiere usar las Arrow Functions 👀

      Gustavo Restrepo

      Gustavo Restrepo

      student•
      hace 5 años

      Sí se puede, basicamente Typescript es Javascript pero con tipado. (Para mí)

    Albert González Rossell

    Albert González Rossell

    student•
    hace 4 años

    Es alucinante la Unión de tipos!

    Gustavo Adolfo Perez Ramos

    Gustavo Adolfo Perez Ramos

    student•
    hace 4 años

    Alias de tipos:

    • TS permite crear alias como nuevo nombre para un tipo
    • El alias se puede aplicar tambien a un conjunto o combinacion de tipos
    • Se usa la palabra reservada type
    type IdUser = number | string; type Username = string;
    Jimmy Buriticá Londoño

    Jimmy Buriticá Londoño

    student•
    hace 4 años

    En TypeScript escribimos:

    let id: number | string;

    en JavaScript se muestra:

    let id;
    Kevin Urgilés

    Kevin Urgilés

    student•
    hace 5 años

    ++Unión de tipos++ Permite el uso de uno o más tipos. Para unir tipos, se usa el caracter |
    Ejemplo: let userId: string | number;

    ++Alias++ Sirven para definir un tipo de dato con nombre personalizado. Se usa la palabra reservada type Ejemplo: type userId = string | number; let myUserId: userId;

    ++Tipos literales++ Permiten definir rápidamente una serie de elementos constantes, se pueden usar con strings, numbers o booleanos. Ejemplo: let tileSize: 8 | 16 | 32; let squareSize: '200x200' | '500x500' | '1000x1000'

      Luis Alejandro Vera Hernandez

      Luis Alejandro Vera Hernandez

      student•
      hace 4 años

      Consiso el resumen

    Federico Walovnik

    Federico Walovnik

    student•
    hace 5 años

    Union de Tipos

    • En Ts se puede definir una variable con multiples datos usando Union Types

    Sintaxis:

    // 10, '10' let idUser: number | string; idUser = 10; idUser = '10'; // Buscar username dado un ID function getUsernameById(id: number | string) { // logica de negocio, find the user return 'luixaviles'; }

    Para evitar redundancias en nuestro codigo (debido a la utilizacion de la misma convinacion de tipos de datos) podemos utilizar alias.

    type IdUser = number | string; let idUser: IdUser;

    Tipos Literales

    • una variable definida con un tipo literal puede contener unicamente un valor de la cadena
    // una variable definida con el nuevo tipo SquareSize solo acpetara alguno de // estos 3 valores predefinidos type SquareSize = '100x100' | '500x500' | '1000x1000';
    Moisés Manuel Morín Hevia

    Moisés Manuel Morín Hevia

    student•
    hace 5 años

    Unión de tipos, una variable con múltiples tipos de datos, | entre los tipos. Alias de tipado, type alias = nombre para un tipado. Literales, es un tipado que contiene una coleción de valores con | como separación. Se declara la variable, se le asiga este tipado y el valor será el alacenado en el tipado.

    Nikolas Santis

    Nikolas Santis

    student•
    hace 5 años

    Genial!!!

      Moisés Manuel Morín Hevia

      Moisés Manuel Morín Hevia

      student•
      hace 5 años

      eres ...

    Albert Eduardo Hidalgo Tavera

    Albert Eduardo Hidalgo Tavera

    student•
    hace 5 años

    Cool!

      Moisés Manuel Morín Hevia

      Moisés Manuel Morín Hevia

      student•
      hace 5 años

      Eres...

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads