CursosEmpresasBlogLiveConfPrecios

Constructor

Clase 6 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

    Viendo ahora
  • 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

    13:45 min
  • 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 examen

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
        Irving Juárez

        Irving Juárez

        student•
        hace 4 años

        En nuestro caso deberia ser "Bob the Constructor"

          Rubén Ernesto Aragón Gil

          Rubén Ernesto Aragón Gil

          student•
          hace 3 años

          jajajaja

          Milton Castañeda

          Milton Castañeda

          student•
          hace 3 años

          Se pasannn....jjajajja

        Axel Enrique Galeed Gutierrez

        Axel Enrique Galeed Gutierrez

        student•
        hace 4 años

        Les comparto mis apuntes. :D

        Constructor

        Es el constructor en el que construimos la instancia y mandamos los parámetros por defecto por el cual queremos que se inicialice esa instancia a un objeto.

        Sintaxis de las propiedades del constructor

        TypeScript nos ayuda con las clases.

        Sintaxis anterior

        class ClassName { property1: dataType; propertyN: dataType; constructor (property1: dataType, propertyN: dataType) { this.proterty1 = property1; this.protertyN = propertyN; } }

        Nueva sintaxis en TypeScript

        De esta forma estaríamos definiendo y asignando las propiedades de una manera corta.

        Cabe destacar que debemos de aclarar o ser explícitos con el alcance de las propiedades, caso contario no podremos usar esta característica de TypeScript además que no podremos usar esa propiedad a lo largo de la clase, ya que su scope solo se verá limitado al constructor.

        class ClassName { constructor ( scope property1: dataType, scope propertyN: dataType ) { statements } }

        Valores por defecto

        Al tener valores por defecto, al momento de crear una instancia de esa clase ya no es obligatorio pasar ese parámetro que tiene un valor por defecto.

        class ClassName { constructor ( scope property1: dataType = value, scope propertyN: dataType = value ) { statements } }

        Código de la clase

        type PartOfTheCalendar = 'day' | 'month'| 'year'; export class MyDate { // year: number; // private month: number; // #day: number; constructor ( public year: number = 1993, public month: number = 7, private day: number = 3 ) { // this.year = year; // this.month = month; // this.#day = day; } printFormat (): string { const { year } = this; const day = this.#addPadding(this.day); const month = this.#addPadding(this.month); return `${day}/${month}/${year}`; } add (amount: number, type: PartOfTheCalendar) { if (type === 'day') this.day += amount; if (type === 'month') this.month += amount; if (type === 'year') this. year += amount; } #addPadding (value: number) { if (value < 10) return `0${value}`; return `${value}`; } } const myDate = new MyDate(2020); const myDate2 = new MyDate(2021); console.log({myDate}); console.log(myDate.printFormat());
          Ronaldo Delgado

          Ronaldo Delgado

          student•
          hace 2 años

          Gracias por el aporte!

        Migdualy Alejandra Gonzalez Martinez

        Migdualy Alejandra Gonzalez Martinez

        student•
        hace 4 años

        En el constructor debes colocar de forma explicita el tipo de acceso si es público o privado.

          Miguel Angel Reyes Moreno

          Miguel Angel Reyes Moreno

          student•
          hace 4 años

          O también protegido con la palabra protected

        Rodrigo Roldan

        Rodrigo Roldan

        student•
        hace 4 años

        Buenas, cómo hago si quisiera enviar sólo el día por ejemplo? Por ejemplo algo asi y el resto dejarlo por defecto: const myDate2 = new MyDate(day:2); Me dice 'Cannot find name month'. Gracias!!

          Nicolas Molina

          Nicolas Molina

          teacher•
          hace 4 años

          Hola, esta es una buena pregunta porque por ejemplo así funciona Python, en este caso no tenemos esa habilidad si quisieras enviar solo el día y este está como tercer parámetro si o si te toca enviar el año y el mes, podrías enviar el año y mes en null y evaluar que cuando lleguen en null asignes algo por defecto, pero no es muy limpio.

          Cayo Legal

          Cayo Legal

          student•
          hace 3 años

          No se podría enviando un objeto?

        Brahyan Antonio Martinez Madera

        Brahyan Antonio Martinez Madera

        student•
        hace 3 años

        Js solo fue amor de una noche XD, con ts me caso

        Gilbert Ardila

        Gilbert Ardila

        student•
        hace 3 años

        para obtener la fecha actual como lo hace la api Date() pero mejorando el tema del mes cero podemos hacerlo así:

        < constructor(private year: number = new Date().getFullYear(), private month: number = new Date().getMonth() +1, private day: number = new Date().getDate(),) {}; >
        Miguel Angel Reyes Moreno

        Miguel Angel Reyes Moreno

        student•
        hace 4 años

        Constructor

        Podemos acortar el constructor de esta forma:

        export class MyDate { //! aquí sí es obligatorio escribir el modificador de acceso constructor( public year: number = 1998, //* valor por defecto public month: number = 1, public day: number = 1 ) {} }
        Jesus Daniel Castro Flores

        Jesus Daniel Castro Flores

        student•
        hace 4 años

        Injection dependencies en Angular esta fuertemente relacionado con esto, se usa el atajo para no escribir codigo de más.

        Andrés Felipe Eslava Zuluaga

        Andrés Felipe Eslava Zuluaga

        student•
        hace 3 años

        En TS todo debe realizarse más explícito. Y es muy bueno!

        Javier Hernando Suarez Pachon

        Javier Hernando Suarez Pachon

        student•
        hace 6 horas
        •
        editado

        Mas funcional con fecha actual por defecto !!

        let date = new Date(); class MyDate { constructor( private year: number = date.getFullYear(), private month: number = date.getMonth() + 1, private day: number = date.getUTCDate(), ) {} private addPading(value: number): string { return value &lt; 10 ? `0${value}` : `${value}`; } public getDateYYYYMMDD(): string { const day = this.addPading(this.day); const month = this.addPading(this.month); return `${this.year}/${month}/${day}`; } public add(amount: number, type: "days" | "month" | "years") { if (type === "days") { this.day += amount; } if (type === "month") { this.month += amount; } if (type === "years") { this.year += amount; } } //aca los retorno para que se puedan usar a nivel de logs... public getDay(): number { return this.day; } public getMonth(): number { return this.month; } public getYear(): number { return this.year; } } let myDate = new MyDate(); console.log(`()=&gt;`, myDate.getDateYYYYMMDD()); let myDate2 = new MyDate(2023); console.log(`(2023)=&gt;`, myDate2.getDateYYYYMMDD()); let myDate3 = new MyDate(2023, 10); console.log(`(2023, 10)=&gt;`, myDate3.getDateYYYYMMDD()); let myDate4 = new MyDate(2023, 10, 15); console.log(`(2023, 10, 15)=&gt;`, myDate4.getDateYYYYMMDD());
        Alvaro Olarte

        Alvaro Olarte

        student•
        hace 4 meses

        Hay que colocar explicitamente el acceso, si no se coloca el modificador de acceso (public/private/readonly), TypeScript no automatiza la creación y asignación de la propiedad en la clase; solo recibe el parámetro, pero no lo asigna automáticamente como propiedad.

        Dario Mendoza

        Dario Mendoza

        student•
        hace 6 meses

        En TypeScript, un constructor es un método especial de una clase que se invoca al crear una instancia de la clase. Su función principal es inicializar propiedades de la clase y ejecutar cualquier código necesario para preparar el objeto. Se define usando la palabra clave constructor, y puede recibir parámetros para asignar valores a las propiedades de la clase.

        Ejemplo:

        class Persona { nombre: string; constructor(nombre: string) { this.nombre = nombre; } } const persona = new Persona("Juan");

        En este ejemplo, el constructor asigna el nombre "Juan" a la propiedad nombre de la instancia persona.

        Paola Alapizco

        Paola Alapizco

        student•
        hace 3 años

        En TypeScript es posible hacer una sobrecarga el constructor así como en otros lenguajes como Java o C#? :thinking:

          Adriana Paredes Salinas

          Adriana Paredes Salinas

          student•
          hace 2 años

          Sí, en TypeScript es posible hacer sobrecarga de constructores, al igual que en otros lenguajes de programación como Java o C#. La sobrecarga de constructores nos permite definir múltiples versiones del constructor con diferentes parámetros, lo que nos brinda flexibilidad para crear instancias del objeto de diferentes formas.

          Para lograr la sobrecarga de constructores en TypeScript, debemos definir varias firmas de constructor en la clase. Cada firma de constructor debe tener una lista diferente de parámetros.

          Cristian Ignacio Zuñiga Medina

          Cristian Ignacio Zuñiga Medina

          student•
          hace 2 años

          te acaban de dar una respuesta sacada de chat gpt jajaja

        Alfonso Neil Jiménez Casallas

        Alfonso Neil Jiménez Casallas

        student•
        hace un año

        tan simpático el constructor XD

        Enrique Sardon Manrique

        Enrique Sardon Manrique

        student•
        hace 2 años

        una pregunta: esa asignación resumida, tambien funciona en javascript? porque al momento de compilarlo me salio el código completo en JS

        export class MyDate { constructor( private year: number, private month: number, private day: number ){}
        class MyDate { year; month; day; constructor(year, month, day) { this.year = year; this.month = month; this.day = day; } }
        Ronaldo Delgado

        Ronaldo Delgado

        student•
        hace 2 años

        Gracias por el video, ahora entiendo mas sobre la funcionalidad del constructor

        Diego Raciel Ortega Hernandez

        Diego Raciel Ortega Hernandez

        student•
        hace 3 años

        TS es maravilloso!