CursosEmpresasBlogLiveConfPrecios

Interfaces

Clase 12 de 25 • Curso de TypeScript: Programación Orientada a Objetos y Asincronismo

Clase anteriorSiguiente clase

Contenido del curso

Introducción

  • 1
    ¿Ya tomaste el Curso de TypeScript: Tipos Avanzados y Funciones?

    ¿Ya tomaste el Curso de TypeScript: Tipos Avanzados y Funciones?

    05:16 min

Fundamentos de POO

  • 2
    Class

    Class

    12:19 min
  • 3
    Métodos

    Métodos

    08:44 min
  • 4
    Acceso público

    Acceso público

    05:16 min
  • 5
    Acceso privado

    Acceso privado

    10:20 min
  • 6
    Constructor

    Constructor

    08:00 min
  • 7
    Getters

    Getters

    11:48 min
  • 8
    Setters

    Setters

    07:55 min

POO Avanzada

  • 9
    Herencia

    Herencia

    10:18 min
  • 10
    Acceso protegido

    Acceso protegido

    08:02 min
  • 11
    Static

    Static

    12:01 min
  • 12
    Interfaces

    Interfaces

    Viendo ahora
  • 13
    Clases abstractas

    Clases abstractas

    06:14 min
  • 14
    Singleton: constructor privado

    Singleton: constructor privado

    10:36 min

Asincronismo y consumo de APIs

  • 15
    Promesas

    Promesas

    14:13 min
  • 16
    Tipando respuestas HTTP

    Tipando respuestas HTTP

    11:38 min
  • 17
    Proyecto: migración de funciones a clases

    Proyecto: migración de funciones a clases

    10:05 min
  • 18
    Consumiendo ProductMemoryService

    Consumiendo ProductMemoryService

    06:30 min
  • 19
    ProductHttpService

    ProductHttpService

    15:33 min
  • 20
    Consumiendo ProductHttpService

    Consumiendo ProductHttpService

    09:22 min

Genéricos

  • 21
    Generics

    Generics

    10:22 min
  • 22
    Generics en clases

    Generics en clases

    12:08 min
  • 23
    Generics en métodos

    Generics en métodos

    15:11 min
  • 24
    Decoradores

    Decoradores

    15:05 min

Próximos pasos

  • 25
    ¿Quieres más cursos de TypeScript?

    ¿Quieres más cursos de TypeScript?

    01:20 min
  • Tomar el examen del curso
    • Axel Enrique Galeed Gutierrez

      Axel Enrique Galeed Gutierrez

      student•
      hace 4 años

      Les comparto mis apuntes. :D

      Interfaces en clases

      Las interfaces en clases funcionan como contratos, nos permiten tipar tanto los atributos como los métodos.

      Aquí no podemos utilizar encapsulamiento, por defecto todos los atributos y métodos son públicos.

      Implements

      Tiene la misma sintaxis cuando aplicamos herencias en las clases, pero implements no es una herencia, es un contrato que nos dice que nuestra clase tiene que cumplir con un estándar que es la interface.

      Este contrato es tanto como para los parámetros como para los métodos.

      Sintaxis

      interface NameInterface { statements } class NameClass implements NameInterface { constructor ( propertiesOfInterface ) { statements } methodOfInterface (): dataType { statements } }

      Código de la clase

      export interface Driver { database: string; password: string; port: number; conect (): void; disconnect (): void; isConeected (name: string): boolean; } // const driver: Driver = { // database: '', // password: '', // port: 23, // } class PostresDriver implements Driver{ constructor ( public database: string, public password: string, public port: number, ) { } conect (): void {} disconnect (): void {} isConeected (name: string): boolean { return true; } } class Oracle implements Driver { constructor ( public database: string, public password: string, public port: number, ) { } conect (): void {} disconnect (): void {} isConeected (name: string): boolean { return true; } }
      Yuliam Rivera González

      Yuliam Rivera González

      student•
      hace 3 años

      Me encantó que mostrara un ejemplo de la vida real, y no solamente se quedara con los ejemplos tipicos de animales y cosas.

        Jean Bustamante

        Jean Bustamante

        student•
        hace 2 años

        Son horribles los ejemplos de animales y vehículos 😿

      Migdualy Alejandra Gonzalez Martinez

      Migdualy Alejandra Gonzalez Martinez

      student•
      hace 4 años

      Una interfaces se implementan con la palabra reservada implements

      Germán Jabloñski

      Germán Jabloñski

      student•
      hace 3 años

      ¿Por qué usar implements con una interfaz cuando se puede utilizar la herencia de clases?

        Andrés Muñoz

        Andrés Muñoz

        student•
        hace 3 años

        Una de las diferencias es que la interface no define nada acerca de la implementación, lo que da a entender que esta implementación va estar a cargo de cada clase. En cambio usando herencia pueden surgir preguntas como utilizo el método de la clase padre o escribo uno nuevo en la clase hija

        Daniel Camacho

        Daniel Camacho

        student•
        hace 3 años

        por el contrato, basicamente estas en la obligacion de implementar lo que dedfinas en la interfaz, o otra opcion si prefieres trabajar con clases seria extendiendo de una clase abstracta tambien te obliga a implementar esos metodos, lo malo es que no puedes crear instancias de ella, solo a las subclases dentro del arbol de herencia

      Diego Ivan Nacimiento

      Diego Ivan Nacimiento

      student•
      hace 3 años

      Cabe recordar que no siempre se deben utilizar interfaces para las clases, sino solo cuando sean convenientes, que son los casos en los que vamos a tener varias clases que van a compartir unas mismas propiedades y/o métodos La idea es tener una interfaz para varias clases y no una interfaz para cada clase

      Christian Valenzuela

      Christian Valenzuela

      student•
      hace 3 años

      Es increible que se muestren ejemplos de la vida real, es muy util ya que asi nos ayuda a implementar este tipo de cuestiones

      Migdualy Alejandra Gonzalez Martinez

      Migdualy Alejandra Gonzalez Martinez

      student•
      hace 4 años

      No es una herencia, es un estandar que se debe cumplir porque previamente ya fue definido

      Miguel Angel Reyes Moreno

      Miguel Angel Reyes Moreno

      student•
      hace 4 años

      Podemos usar las interfaces como 'contratos' para que las clases cumplan una serie de requisitos.

      William Cortes

      William Cortes

      student•
      hace 4 años

      En VScode puedes colcar el cursor sobre el nombre de la clase, en la parte superior izquierda sobre la palabra class, sale un ícono(como un bombilllito) que al clickearlo te despliega un menú, si selecionas: -Inplements Interface 'NameInterface'.... le agrega a nuestra clase con todos los atributos de la interface

      fabio andres zamora osorio

      fabio andres zamora osorio

      student•
      hace 3 años

      Esto aprendiendo poo en typescript y quisiera saber cual es el beneficio de crear interfaces e implementarlas en una clase ya que el codigo de la interface se repite en la clase la unica diferencia es que en la clase los metodos tienen implementacion, osea,¿no seria mas simple crear una clase con todos los metodos y atributos de las interfaces y no crear las interfaces?

        Edson Lazo

        Edson Lazo

        student•
        hace 3 años

        Hola Fabio, La idea de utilizar una interfaz, es poder definir un comportamiento estandarizado para distintos objetos. Para continuar el ejemplo del profesor, digamos que nosotros tenemos un método que nos trae el driver de la base de datos de acuerdo a una variable de entorno, nosotros no sabemos exactamente cual de las clases nos traerá este método, pero si sabemos que devolverá un objeto con la interfaz 'Driver', a continuación detallo este metodo:

        function getConnectionFromConfig(): Driver{ let connectionType: string = process.env.CONECTION_TYPE; if(connectionType == 'ORACLE'){ return new OracleDriver('database', 'password', 20); }else{ return new PostgresDriver('database', 'password', 20, 100); } }

        Como puedes ver, este método devolverá el driver de Oracle si la variable de entorno 'CONECTION_TYPE' es igual 'ORACLE' y en caso de no serlo devolverá el driver de Postgres.

        Esto no supondra ningun problema para nosotros, ya que sabemos que este metodo devuelve un objeto con la interfaz driver, por lo que podemos simplemente llamar a los metodos del objeto que devuelve el metodo, de la siguiente forma:

        let databaseConnection: Driver = getConnectionFromConfig(); databaseConnection.connect(); databaseConnection.disconnect();

        De esta manera nosotros podemos intercambiar el driver, solo con cambiar la variable de entorno CONECTION_TYPE sin cambiar ni una linea de codigo.

        Este es solo un ejemplo, pero usar interfaces tiene muchas ventajas. te recomiendo leer este post de stack overflow donde dan varios ejemplos de usos de interfaces y su utilidad.

        • https://stackoverflow.com/questions/240152/why-would-i-want-to-use-interfaces

        Saludos!

      Víctor Andrés Córdova Poma

      Víctor Andrés Córdova Poma

      student•
      hace 4 años

      Se puede tener atributos o métodos de tipo private o protected implementando una interface? Lo digo porque al intentarlo me sale error, y me dice que la interface no tiene esa propiedad o método en la interface de tipo private o protected. Sin embargo, al colocar el tipo dentro de la interface me sale error, ya que no puede ser colocado en la interface.

        Víctor Andrés Córdova Poma

        Víctor Andrés Córdova Poma

        student•
        hace 4 años

        Al parecer solo se puede resolver ese problema usando clases abstractas.

        abstract class Base { protected abstract getName(name: string): string; protected abstract height: number; } class Derived extends Base { constructor ( protected height: number = 5, ) { super(); } protected getName(name: string) { return "world" + name; } }
        Daniel Camacho

        Daniel Camacho

        student•
        hace 3 años

        normalmente los metodos en las interfacces el modificador no va private, ya que se espera que la implementacion la hagan en otro archivo,en su mayoria son publicos ya que se crean con la finalidad de que lo implementen varios paquetes de clases o por fuera de arboles de herencia, por eso no es usual definirlo como protected o private, existe un modificador default que te permite ahcer la implementacion en el mismo, pero no se en ts como seria

      Eduardo Robles

      Eduardo Robles

      student•
      hace 4 años

      hay manera de implementar interfaces en clases hechas con funciones?

      Jesús Patricio Pereira Matus

      Jesús Patricio Pereira Matus

      student•
      hace 4 meses

      las interfaces es como dijo nico, un contrato, da igual como lo implementen pero deben tenerlo en caso de que una interfaz tenga un metodo da igual como lo implementes en otra clase pero debe tenerlo si o si

        Jesús Patricio Pereira Matus

        Jesús Patricio Pereira Matus

        student•
        hace 4 meses

        si quieren ver este paradigma al 100 les recomiendo ver java porque ahi se explica mejor con los diagramas UML entre otras cosas

      David Cardenas Guzman

      David Cardenas Guzman

      student•
      hace 3 años

      Por qué es necesario colocar los {} para el constructor de manera obligatoria en este caso?

        Paola Alapizco

        Paola Alapizco

        student•
        hace 2 años

        Hola David. El constructor es una función especial de las clases, y su sintaxis es igual a cualquier otra función.

        • Tiene un nombre constructor
        • Tiene parámetros (o no): (params)
        • Tiene un cuerpo {}

        .

        El constructor al ser una función debe seguir la sintaxis del lenguaje, por lo tanto si o si debe llevar las llaves { } a pesar de que el cuerpo este vacío. .

        :writing_hand: En las clases la palabra recercada function no se coloca antes del nombre.

      John Carlos Espitia Rivera

      John Carlos Espitia Rivera

      student•
      hace 3 años

      Cuando defines una interface puedes definir métodos y atributos protected o solo public? Entiendo que private no es valido pero protected parece una definición válida

        Adriana Paredes Salinas

        Adriana Paredes Salinas

        student•
        hace 2 años

        En TypeScript, las interfaces solo pueden definir miembros públicos (public). No es posible definir miembros protegidos (protected) o privados (private) en una interfaz. Esto se debe a que las interfaces en TypeScript se utilizan principalmente para especificar la forma (forma o estructura) de los objetos y no para encapsular datos o definir detalles de implementación.

      Manuel Calle Pérez

      Manuel Calle Pérez

      student•
      hace 3 años

      Alguien sabe en que curso utilizan typeorm q el profesor lo menciona. Gracias

        Brahyan Antonio Martinez Madera

        Brahyan Antonio Martinez Madera

        student•
        hace 3 años

        En el curso de nestjs

        Juan Castro

        Juan Castro

        teacher•
        hace 2 años

        https://platzi.com/cursos/nestjs-typeorm/

      fabio andres zamora osorio

      fabio andres zamora osorio

      student•
      hace 3 años

      Haciendo pruebas me di cuenta de que en typescript una clase puede implementar multiples interfaces, entonces tuve una duda ¿si una clase implementa una interface1 y una interface2 donde ambas tienen el mismo nombre y tipos en un metodo, entonces, al crear la implementacion de dicho metodo en la clase cual metodo se esta implementando el de la interface1 o el de la interface2?

      Ronaldo Delgado

      Ronaldo Delgado

      student•
      hace 2 años

      excelente implementar interfaces para nuestros proyectos así todo será mas robusto

      Kevin Daniel Guzman Delgadillo

      Kevin Daniel Guzman Delgadillo

      student•
      hace 2 años

      Las Interfaces de Typescript tiene su pero y es el siguiente: Cuando estas implementando algo de arquitectura de software (usando patrones de diseño, en específico singleton), tu no puedes defir la interface cómo tipo de dato esperado al injectar tu servicio, ya que al transpilarse a javascript, Typescript no interpreta la interface cómo un valor válido.

      Miguel Angel Hernandez Colombo

      Miguel Angel Hernandez Colombo

      student•
      hace 3 años

      no entiendo :(

        Rodrigo Ramos Xochiteotzin

        Rodrigo Ramos Xochiteotzin

        student•
        hace 3 años

        ¿qué es lo que no te queda claro, compañero?

    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