CursosEmpresasBlogLiveConfPrecios

Extensión de interfaces

Clase 23 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 min
  • 2
    Instalación de herramientas para TypeScript

    Instalación de herramientas para TypeScript

    05:47 min
  • 3

    Instalación de herramientas en Windows

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

    Navegación y refactorización

    04:37 min

Entorno de Desarrollo

  • 5
    El compilador de TypeScript

    El compilador de TypeScript

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

    El archivo de configuración de TypeScript

    07:22 min
  • 7
    Mi primer proyecto TypeScript

    Mi primer proyecto TypeScript

    05:09 min

Tipos en TypeScript

  • 8
    Tipado en TypeScript

    Tipado en TypeScript

    01:37 min
  • 9
    Number, Boolean y String

    Number, Boolean y String

    14:09 min
  • 10
    Any

    Any

    08:28 min
  • 11
    Void y never

    Void y never

    15:58 min
  • 12
    null y undefined

    null y undefined

    11:03 min
  • 13
    Object

    Object

    07:44 min
  • 14
    Array

    Array

    09:44 min
  • 15
    Tupla

    Tupla

    11:25 min
  • 16
    Enum

    Enum

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

    Unión de Tipos, Alias y Tipos Literales

    11:58 min
  • 18
    Aserciones de tipo

    Aserciones de tipo

    11:26 min
  • 19
    Funciones en TypeScript

    Funciones en TypeScript

    14:19 min
  • 20
    Resumen

    Resumen

    06:54 min

Tipos Personalizados

  • 21
    Interfaces

    Interfaces

    10:18 min
  • 22
    Interfaces: propiedades opcionales

    Interfaces: propiedades opcionales

    10:57 min
  • 23
    Extensión de interfaces

    Extensión de interfaces

    Viendo ahora
  • 24
    Clases

    Clases

    14:02 min
  • 25
    Clases públicas y privadas

    Clases públicas y privadas

    15:10 min
  • 26
    Métodos Get y Set

    Métodos Get y Set

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

    Herencia de clases y propiedades estáticas

    17:41 min
  • 28
    Resumen

    Resumen

    13:24 min

Módulos

  • 29
    Principios de responsabilidad única

    Principios de responsabilidad única

    15:03 min
  • 30
    Resolviendo módulos

    Resolviendo módulos

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

    Webpack y agrupación de Módulos

    14:02 min

Cierre

  • 32
    Cierre

    Cierre

    00:57 min
Tomar examen
    Luis Abdel Rangel Castro

    Luis Abdel Rangel Castro

    student•
    hace 5 años

    3 Ways to Clone Objects in JavaScript

    Because objects in JavaScript are references values, you can't simply just copy using the =. But no worries, here are 3 ways for you to clone an object

    const food = { beef: '🥩', bacon: '🥓' } // "Spread" { ...food } // "Object.assign" Object.assign({}, food) // "JSON" JSON.parse(JSON.stringify(food)) // RESULT: // { beef: '🥩', bacon: '🥓' }
      Samuel Zanón

      Samuel Zanón

      student•
      hace 5 años

      if you're using "lodash" one of the most used libraries, you can simply use "cloneDeep"

      Si estás usando "Lodash" una de las librerías más usadas, puedes usar simplemente clonedeep.

      var cloned = _.cloneDeep(objects);

      Miguel Angel Reyes Moreno

      Miguel Angel Reyes Moreno

      student•
      hace 5 años

      I think the most used now is the spread operator

    Jose Daniel Barría Reyes

    Jose Daniel Barría Reyes

    student•
    hace 6 años

    Extendiendo Interfaces. Las interfaces pueden extenderse unas de otras. Esto permite copiar los miembros ya definidos en una interfaz a otra, ganando flexibilidad y reusabilidad de componentes. Utilizamos la palabra reservada extends para utilizar herencia.

    interface Person { name:string; lastname:string; } interface Student extends Person { person:Person }
      Moisés Manuel Morín Hevia

      Moisés Manuel Morín Hevia

      student•
      hace 5 años

      Muy bien ! Muchas graicas.

      Luis Angel

      Luis Angel

      student•
      hace 4 años

      Más que extenderse ("extends", en inglés), lo que permiten más precisamente las interfaces en TypeScript es lo que español y en Programación Orientada a Objetos (POO) se conoce como "herencia". Bajo este mecanismo, las interfaces pueden "heredar" propiedades de otras interfaces, lo cual nos ayuda a no tener que repetir el mismo código que varias interfaces que hemos definido podrían compartir y además facilita el mantenimiento del mismo código a futuro.

    Boris Vargas Paucara

    Boris Vargas Paucara

    student•
    hace 6 años
    export {} enum PhotoOrientation { Landscape, Portrait, Square, Panorama } interface Entity { id: number; title: string; } interface Album extends Entity { // copia de los atributos de Entity // id: number; // titulo: string; descripcion: string; } interface Picture extends Entity{ orientation: PhotoOrientation } const album: Album = { id: 1, title: 'Meetups', descripcion: 'Community events around the world' }; const picture: Picture = { id: 1, title: 'Family', orientation: PhotoOrientation.Landscape }; let newPicture = {} as Picture; newPicture.id = 2; newPicture.title = 'Moon'; console.log('album : ', album); console.log('picture : ', picture); console.log('newPicture : ', newPicture);
      Moisés Manuel Morín Hevia

      Moisés Manuel Morín Hevia

      student•
      hace 5 años

      Buen código !

    Miguel Angel Reyes Moreno

    Miguel Angel Reyes Moreno

    student•
    hace 5 años

    Extensión de interfaces

    La herencia es un mecanismo para poder reutilzar código dentro de la programación orientada a objetos. TS provee esto con las interfaces. Las interfaces pueden extenderse de otras. Esto permite copiar los miembros ya definidos en una interfaz a otra, ganando flexibilidad y reusabilidad de componentes.

    export {} enum PhotoOrientation{ Landscape, Portrait, Square, Panorama } //*Herencia de interfaces interface Entity { id: number, title: string, } interface Album extends Entity{ //*Copia de los atributos de Entity description: string } interface Picture extends Entity { orientation: PhotoOrientation } const album: Album = { id: 5, title: 'Meetups', description: 'Community events around the world' } const picture: Picture = { id: 10, title: 'Family', orientation: PhotoOrientation.Square } let newPicture = {} as Picture newPicture.id = 2 newPicture.title = 'Moon' console.table({album}) console.table({picture}) console.table({newPicture})
    Jose Cortes Jaramillo

    Jose Cortes Jaramillo

    student•
    hace 5 años

    Cuál es la diferencia entre asignar el tipo a una variable con ':' y con 'as', ejemplo. let picture: Picture; let picture = { } as Picture;

      Edgar López Rangel

      Edgar López Rangel

      student•
      hace 5 años

      En uno va a tipar la variable y en el otro va a hacer una aserción.

      Significa que en el primero va a "exigir" que la variable tenga la estructura del tipo mientras que en la segunda vas a declarar un objeto (puede ser un objeto vacio como en tu ejemplo) y te va a permitir tratar a la variable como el tipo que definas (aún cuando el objeto esté vacio)

      Jorge Cruz Perez

      Jorge Cruz Perez

      student•
      hace 5 años

      Interesante pregunta, encontre este link JSX support, espero sea de ayuda, saludos :)

    Henry Villavicencio

    Henry Villavicencio

    student•
    hace 5 años

    Podrián ayudarme con esta duda. Según yo ambas lineas de código son equivalentes. ¿Por qué en el segundo caso me marca error ?

    let newPicture = {} as Picture; // let newPicture: Picture ={};
      Alberto Camarena

      Alberto Camarena

      student•
      hace 5 años

      Hola Henry 👋🏼, yo tengo entendido que no son equivalentes, ya que en la primera línea se le asigna un tipo {}(Object) a la variable newPicture de primera instancia y ya después le dices a TS que confíe en ti y lo considere como una interfaz llamada Picture, por eso no te marca ningún error. Y para el caso del segundo desde un principio le dices que su tipo es la interfaz Picture y por eso el error que te marca es un "missing properties", ya que debes cumplir con el contrato.

      Ariel Claudio Sitta

      Ariel Claudio Sitta

      student•
      hace 4 años

      Muchas gracias, Alberto. Yo tmb tenia la misma duda

    Marcia Castro Moya

    Marcia Castro Moya

    student•
    hace 5 años

    No entiendo cuándo puedes utilizar let o const para definir variables

      Nixon Martinez

      Nixon Martinez

      student•
      hace 5 años

      puedes usar let para declarar una variable de scope o ámbito global y puedes reasignar su valor, con const declaras unan función que también puede ser global, no la puedes reasignar pero si mutarla, esto significa que puedes extender sus características o propiedades.

      Yamid Vélez Muñoz

      Yamid Vélez Muñoz

      student•
      hace 5 años

      En javascript definir una variable con const es por que su valor no va a cambiar (hay excepcion cuando el valor es un array u objeto) de lo contrario se debe declarar con let

      Ejemplo:

      const paisNacimiento = 'Colombia'; //Tu pais de nacimiento nunca va a cambiar, siempre sera el mismo let cantidadGatos = 2; //La cantidad de gatos puede aumentar o disminuir
    Jorge Cruz Perez

    Jorge Cruz Perez

    student•
    hace 5 años

    De que dependio que en la salida por consola album tenia saltos de linea y picture y newPicture no los tenia?

      Rafael Aguero Baez

      Rafael Aguero Baez

      student•
      hace 4 años

      Lo que pasó ahí fue simplemente la consola. Esto ocurre debido a que cuando imprime un objeto con muchas propiedades empieza a incluir saltos de líneas en las propiedades para que sea más legible, pero cuando es pequeño no lo hace porque los objetos pequeños son fácil de leer.

    yerson lasso

    yerson lasso

    student•
    hace 5 años

    Tengo que decir que tenía la duda de enq ue se diferenciaban "type" y "interface" a parte de su sintaxis, pero este tema de herencias soluciono mi duda, me habría gustado que se especificara desde un poco antes igual

    Alejandro Barrios

    Alejandro Barrios

    student•
    hace 5 años

    Dentro de una interface, también pueden usar otra interface para definir como serán los elementos dentro de un objeto, por ejemplo un array de objetos.

    interface Photo extends Entity { orientation: PhotoOrientation; } interface Album extends Entity { description: string; photos: Photo[] // recibe un array de objetos con las propiedades de la interface Photo } const album: Album = { id: 1, title: 'Meetups', description: 'Community events around the world', photos: [{ id: 1, title: 'Test Photo', orientation: PhotoOrientation.Portrait }, { id: 2, title: 'Another Test Photo', orientation: PhotoOrientation.Landscape }] } album.photos.push('test'); // Error! Solo puede recibir objetos con la estructura de la interface Photo
      Moisés Manuel Morín Hevia

      Moisés Manuel Morín Hevia

      student•
      hace 5 años

      Thanks.

    Juan Jiménez

    Juan Jiménez

    student•
    hace 5 años
    export {}; enum PhotoOrientation { Landscape, Portrait, Square, Panorama } interface Entity { id: number; title: string; } interface Album extends Entity { // copia de los atributos de Entity description: string; } interface Picture extends Entity { orientation: PhotoOrientation } const album: Album = { id: 1, title: 'Meetups', description: 'Community events around the world' }; const picture: Picture = { id: 1, title: 'Family', orientation: PhotoOrientation.Landscape }; let newPicture = {} as Picture; newPicture.id = 2; newPicture.title = 'Moon'; console.log('album', album); console.log('picture', picture); console.log('newPicture', newPicture);
    Gustavo Gonzalez Montero

    Gustavo Gonzalez Montero

    student•
    hace 4 años

    Se puede desactivar la declaración de variables con 'as' o aserción en typescript?

      Irving Juárez

      Irving Juárez

      student•
      hace 4 años

      Si se puede, te vas a tu archivo de configuracion y colocas lo siguiente:

      { rules: { "no-angle-bracket-type-assertion": true } }
    Darwin Rodríguez

    Darwin Rodríguez

    student•
    hace 5 años

    A lo mejor se me está pasando por alto algo pero no entiendo por qué newPicture no da error si no se definió el atributo orientation?

      David Prieto Cornejo

      David Prieto Cornejo

      student•
      hace 5 años

      Porque esta definido como una aserción de tipos (as) y por tanto el compilador trata a newPicture como si fuera de ese tipo pero "no le exije" que cumpla con el contrato de la Interfaz, es más flexible.

      Moisés Manuel Morín Hevia

      Moisés Manuel Morín Hevia

      student•
      hace 5 años

      Justo me salto esta duda, la respuesta es por el as ya que no marcará error porque solamente le estas diciendo que es de tal tipo pero no que es ese tipado obligatorio.

    Jose Manuel Montaño Saenz

    Jose Manuel Montaño Saenz

    student•
    hace 4 años

    ¿Por que newPicture no marca error por la propiedad orientation de Picture?

    interface Entity { id: number; title: string; } interface Picture extends Entity { orientation: PhotoOrientation; // Esta propiedad por que se omite? } let newPicture = {} as Picture; newPicture.id = 2; newPicture.title = 'Moon'; // Salida newPicture: { id: 2, title: 'Moon' }

    Sabemos que newPicture toma el contrato que Picture ha creado, ¿Tiene algo que ver la aserción?

      Jose Manuel Montaño Saenz

      Jose Manuel Montaño Saenz

      student•
      hace 4 años

      Nota: primero leer las preguntas del curso antes de preguntar.

      Respuesta

      Al declarar la variable newPicture hacemos una aserción de tipo indicandole a TypeScript que esa variable debe ser de tipo Picture pero no es obligatorio que contenga todas las propiedades. gajes del oficio.

    Sergio Orejarena Rueda

    Sergio Orejarena Rueda

    student•
    hace 4 años

    Un pequeño ejemplo en otro contexto de lo que hemos trabajado.

    carbon.png
    Juan Chavez Cornejo

    Juan Chavez Cornejo

    student•
    hace 4 años

    Para clonar Objetos en JavaScript o en otros lenguajes en general, les recomiendo revisar conceptos como shallow copy y deep copy. https://stackoverflow.com/questions/184710/what-is-the-difference-between-a-deep-copy-and-a-shallow-copy

    Juan Chavez Cornejo

    Juan Chavez Cornejo

    student•
    hace 4 años

    Para clonar Objetos en JavaScript o en otros lenguajes en general, les recomiendo revisar conceptos como shallow copy y deep copy. https://stackoverflow.com/questions/184710/what-is-the-difference-between-a-deep-copy-and-a-shallow-copy

    Hector Rubi Garcia

    Hector Rubi Garcia

    student•
    hace 5 años

    Me parece interesante que cuando creamos un objeto de tipo Picture el compilado pide que agreguemos los elementos establecidos en la interfaz.

    Capture1.PNG
    . El profesor utiliza la aserción de tipos con la sintaxis as

    let newPicture = {} as Picture

    Si imprimimos el valor de la variable newPicture para ver lo que tiene, sale un objeto vacío.

    console.log('newPicture 1', newPicture)
    Capture2.PNG
      Gerson Zuñiga

      Gerson Zuñiga

      student•
      hace 5 años

      parece que newPicture violó el contrato 🤔

      Alberto Camarena

      Alberto Camarena

      student•
      hace 5 años

      Hola hola, un compañero en un cometario arriba tenía una duda similar y lo que yo le explicaba es que en el caso de la aserción a la variable newPicture se le asigna un tipo {}(Object) de primera instancia y ya después se le dice a TS que confíe y lo considere como una interfaz llamada Picture, por eso no marca ningún error ni “viola el contrato”. Y para el caso de la asignación explícita del tipo interfaz Picture desde su declaración requiere los atributos, es por eso que marca el error “missing properties”, ya que ahí si se incumple el contrato.

    Mauricio Galvez

    Mauricio Galvez

    student•
    hace 4 años

    Al declarar una variable de esta forma:

    let variable: number = 2;

    Estás diciendo que ese espacio de memoria solo puede almacenar valores de tipo number. . Al hacerlo de esta otra forma (aserción):

    let variable = 2 as number;

    Estás diciendo que el valor (2) que se le está asignando a la variable es de tipo number, pero la variable puede contener cualquier otro tipo de dato. Es solo para ser más explícito y tener autocompletado, realmente no estas tipando la variable, solo estás declarando de que tipo es el dato que le estás asignando en ese momento.

    Moisés Manuel Morín Hevia

    Moisés Manuel Morín Hevia

    student•
    hace 5 años

    Herencia Extención de interfaces, Los miembros definidos a una interfaz pueden ser copiados para flexibilidad y ahorro de componentes. interface NameObj extends NameObj. Cambiar el estado de los objetos.

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