CursosEmpresasBlogLiveConfPrecios

Métodos Get y Set

Clase 26 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
    Aurelio ML

    Aurelio ML

    student•
    hace 5 años

    Un poquito de información extra:

    TypeScript soporta getters/setters como una forma de interceptar accesos a un miembro de un objeto. Esto le da una forma de tener un control más fino sobre cómo se accede a un miembro en cada objeto.

    Convirtamos una clase simple para usar get y set. Primero, empecemos con un ejemplo sin getters y setters.

    class Employee { fullName: string; } let employee = new Employee(); employee.fullName = "Bob Smith"; if (employee.fullName) { console.log(employee.fullName); }

    Aunque permitir que la gente establezca directamente el nombre completo al azar es bastante útil, también podemos querer imponer algunas restricciones cuando se establece el nombre completo.

    En esta versión, añadimos un configurador que comprueba la longitud del nuevo Nombre para asegurarse de que es compatible con la longitud máxima de nuestro campo de base de datos de respaldo. Si no lo es, arrojamos un error notificando al código del cliente que algo salió mal.

    Para preservar la funcionalidad existente, también añadimos un simple programa que recupera el nombre completo sin modificar.

    const fullNameMaxLength = 10; class Employee { private _fullName: string; get fullName(): string { return this._fullName; } set fullName(newName: string) { if (newName && newName.length > fullNameMaxLength) { throw new Error("fullName has a max length of " + fullNameMaxLength); } this._fullName = newName; } } let employee = new Employee(); employee.fullName = "Bob Smith"; if (employee.fullName) { console.log(employee.fullName); }

    Para probarnos a nosotros mismos que nuestro accesorio está comprobando ahora la longitud de los valores, podemos intentar asignar un nombre de más de 10 caracteres y verificar que obtenemos un error.

    Un par de cosas a tener en cuenta sobre los accesorios:

    Primero, los accessores requieren que el compilador dé como resultado ECMAScript 5 o superior. La bajada de nivel a ECMAScript 3 no está soportada. Segundo, los accesorios con un get y sin set se infieren automáticamente para ser de solo lectura. Esto es útil cuando se genera un archivo.d.ts a partir de su código, porque los usuarios de su propiedad pueden ver que no pueden cambiarlo.

      Raul Hernández

      Raul Hernández

      student•
      hace 5 años

      Muy útil de verdad la explicación, en el curso de js profesional también lo explicaron pero con tu ejemplo ya me ha quedado clarísimo su uso. Gracias!

      Juan David González Rodríguez

      Juan David González Rodríguez

      student•
      hace 5 años

      ósea básicamente con los get y set , no podemos modificar su estado o su valor definitivamente?

    Victoria Ramirez Charles

    Victoria Ramirez Charles

    student•
    hace 5 años

    _(underscore) Es una simple convención que indica una variable privada.

    private _id: number; private _title: string; private _orientation: PhotoOrientation;
      Cristian Blandón

      Cristian Blandón

      student•
      hace 5 años

      Es bueno tener en cuenta que la mayoría de equipos que no trabajan con TypeScript, usan esta convención.
      La mayoría de equipos que sí trabajan con TypeScript, no la usan, porque el indicador de acceso (private) es suficiente.

      Moisés Manuel Morín Hevia

      Moisés Manuel Morín Hevia

      student•
      hace 5 años

      Okey, lo tendré en cuenta. Yo cambie el nombre del get & set porque pensé que _ era mucho.

    Carlos Rodríguez

    Carlos Rodríguez

    student•
    hace 4 años

    Es mejor llamar a los métodos con el prefijo getId y setId:

    export {}; enum PhotoOrientation { Landscape, Portrait, Square, Panorama } // get y set class Picture { // Propiedades private id: number; private title: string; private orientation: PhotoOrientation; public constructor(id: number, title: string, orientation: PhotoOrientation) { this.id = id; this.title = title; this.orientation = orientation; } get getId() { return this.id; } set setId(id: number) { this.id = id; } get getTitle() { return this.title; } set setTitle(title: string) { this.title = title; } get getOrientation() { return this.orientation; } set setOrientation(o: PhotoOrientation) { this.orientation = o; } // Comportamiento public toString() { return `[id: ${this.id}, title: ${this.title}, orientation: ${this.orientation}]`; } } class Album { private id: number; private title: string; private pictures: Picture[]; public constructor(id: number, title: string) { this.id = id; this.title = title; this.pictures = []; } get getId() { return this.id; } set setId(id: number) { this.id = id; } get getTitle() { return this.title; } set setTitle(t: string) { this.title = t; } public addPicture(picture: Picture) { this.pictures.push(picture); } } const album: Album = new Album(1, 'Personal Pictures'); const picture: Picture = new Picture(1, 'Platzi session', PhotoOrientation.Square); album.addPicture(picture); console.log('album', album); // Accediendo a los miembros publicos console.log('picture.id', picture.getId); // get id() picture.setId = 100; // private, set id(100); picture.setTitle = 'Another title'; // private album.setTitle = 'Personal Activities'; //private console.log('album', album);
      Luis Angel

      Luis Angel

      student•
      hace 4 años

      Es mas sencillo así para algunos que conocemos un poco de Java, ya que esa es la convención que se utiliza para nombrar métodos getters y setters además que dichos nombres son más significativos que simplemente nombrarlos igual que los atributos de la clase a la que hacen referencia.

    Luis Abdel Rangel Castro

    Luis Abdel Rangel Castro

    student•
    hace 5 años
    export {}; console.clear(); enum PhotoOrientation { Landscape = 'Landscape', Portrait = 'Portrait', Square = 'Square', Panorama = 'Panorama', } // get y set class Picture { private _id: number; private _title: string; private _orientation: PhotoOrientation; constructor(id: number, title: string, orientation: PhotoOrientation) { this._id = id; this._title = title; this._orientation = orientation; } get id(): number { return this._id; } set id(id: number) { this._id = id; } get title(): string { return this._title; } set title(title: string) { this._title = title; } get orientation(): PhotoOrientation { return this._orientation; } set orientation(orientation: PhotoOrientation) { this._orientation = orientation; } // Comportamiento public toString() { return `[id: ${this.id}, title: ${this.title}, orientation: ${this.orientation}]`; } } class Album { #id: number; #title: string; #pictures: Picture[] = []; constructor(id: number, title: string) { this.#id = id; this.#title = title; // this.pictures = []; } get id(): number { return this.#id; } // set id(id: number) { // this.#id = id; // } get title(): string { return this.#title; } set title(title: string) { this.#title = title; } addPicture(picture: Picture) { this.#pictures.push(picture); // this.pictures.push({...picture}); } } const picture: Picture = new Picture(100, 'cool', PhotoOrientation.Square); const picture1 = new Picture(201, 'korn', PhotoOrientation.Square); const album: Album = new Album(534, 'Family'); console.log(picture); console.log(picture1); album.addPicture(picture); album.addPicture(picture1); console.log('album', album); // Accediendo a los miembros publicos // picture.id = 100; picture.title = 'Another title'; console.log('album', album); // console.log(album.id); picture.title = 'New title';
    Moisés Manuel Morín Hevia

    Moisés Manuel Morín Hevia

    student•
    hace 5 años

    Modificadores de acceso. Get(accesa) y Set(muta), Interceptar y controlar el acceso a los miembros privados del objeto. Son métodos de la clase para leer y cambiar los valores de los miembros privados. De que forma podemos acceder & mutar el valor en los miembros. Validación de los nuevos valores en los miembros.

    Edwin Alberto Equihua Ochoa

    Edwin Alberto Equihua Ochoa

    student•
    hace 5 años

    ya, en caso que les pase que les de error por el EcmaScript, en su terminal escriban: tsc --target es6 src/clases-get-set.ts. ya con esto se les solucionara el problema.

      Moisés Manuel Morín Hevia

      Moisés Manuel Morín Hevia

      student•
      hace 5 años

      Thanks, lo tendré en cuenta.

    Irving Juárez

    Irving Juárez

    student•
    hace 4 años

    ¿Por qué se coloca un guion bajo a las variables privadas?

    Eso es una forma de decirle a los programadores que una variable no se debe modificar. Es solo una convención, por lo que incluso podemos cambiar esa variable si así lo deseamos, no hay problema por parte del lenguaje, pero es una convención que el programador le hace a otros programadores que pueda que trabajen en el proyecto a futuro

      Jimmy Buriticá Londoño

      Jimmy Buriticá Londoño

      student•
      hace 4 años

      Lo había visto y no tenía claro el porque usaban un guion bajo.

    Andres Felipe Pinchao Ramirez

    Andres Felipe Pinchao Ramirez

    student•
    hace 5 años

    METODOS GET Y SET

    TypeScript soporta los métodos accesores set y get como una forma de interceptar los accesos a los miembros privados de un objeto.

    export{} enum PhotoOrientation { Landscape, Portrait, Square, Panorama } //Los moficadores de acceso get y set son metodos que nos permiten controlar //El acceso a cada uno de los miembros class Picture { #id:number; #title:string; #orientation:PhotoOrientation; constructor(id:number,title:string,orientation:PhotoOrientation){ this.#id = id; this.#title = title; this.#orientation = orientation; } //El nombre de una funcion accesora no debe coincidir con el nombre de un miembro //Podremos arreglar esto cambiando el nombre del miembro o el de la funcion get idH(){ return this.#id; } set idH(id){ this.#id = id; } get titleT(){ return this.#title } set titleT(title:string){ this.#title = title; } get orientationO(){ return this.#orientation; } set orientationO(o:PhotoOrientation){ this.#orientation = o; } public toString(){ return `[id ${this.#id}, title: ${this.#title}, orientation: ${this.#orientation}]`; } } class Album{ #id:number; #title:string; #pictures: Picture[]; public constructor(id:number, title:string){ this.#id = id; this.#title = title; this.#pictures = []; } public addPicture(picture:Picture){ this.#pictures.push(picture); } } const album:Album = new Album(1, 'personal pictures'); const picture: Picture = new Picture(1, 'Platzi session', PhotoOrientation) album.addPicture(picture); console.log(album); //Cada vez que efectuamos un cambio accesando a los atributos de mi objeto heredado //Estamos aplicando por debajo los metodos get cuando solo solicitamos el valor //Y set cuando cambiamos el valor de el atributo console.log(picture.id)//get id() picture.id = 100; //private, set id(100) picture.title = 'Otro titulo'; album.title = 'Personal Activities'; console.log(album);
    Edwin Alberto Equihua Ochoa

    Edwin Alberto Equihua Ochoa

    student•
    hace 5 años

    instale la extencion que dijo el profesor, pero aun me marca error en los datos privados #, porque sera¿?

      David Prieto Cornejo

      David Prieto Cornejo

      student•
      hace 5 años

      Fijate en el tsconfig.json el atributo target que sea es6 o mayor!

      { "compilerOptions": { "target": "es6" } }
      Moisés Manuel Morín Hevia

      Moisés Manuel Morín Hevia

      student•
      hace 5 años

      Es por la configuración el arvhico json principal, debe estar a la versión actual (es6)

    Jose Daniel Hernandez Quiceno

    Jose Daniel Hernandez Quiceno

    student•
    hace 6 años

    Entonces que logica tiene establecer estados como privados y añadiendo los getter y setter para luego modificarlos como si fueran publicos. Porque no simplemente dejarlos publicos?

      Manuel Ojeda

      Manuel Ojeda

      student•
      hace 6 años

      El uso de Gettters y Setters es utilizado muchisimo en Programación Orientada a Objetos, de manera que para acceder a la propiedad del objeto es a tráves de esas dos funciones.

      Es completamente nromal pensar que es mejor dejar las propiedades públicas, pero no es siempre bueno dejar que sea visible para todos de manera que hay propiedades y funcioes que solo se usarán de manera interna en la Clase.

      Esto que hace Luis es conocido como Encapsulamiento

      Agustin Martinez

      Agustin Martinez

      student•
      hace 6 años

      Hola Jose, hablando con un amigo que usa hace mucho typescript me dijo que es algo como de usar cuando realizas alguna modificacion al valor que se envia al set antes de setearlo propiamente dicho.

    Miguel Angel Reyes Moreno

    Miguel Angel Reyes Moreno

    student•
    hace 5 años

    Creo que una mejor manera de apreciar que sí estamos usando los métodos GET y SET es escribir un nombre diferente al del atributo, a pesar de haber usado el guión bajo. Ejemplo:

    get idPicture(){ return this._id } set idPicture(id: number){ this._id = id } get titlePicture(){ return this._title } set titlePicture(title: string){ this._title = title } get orientationPicture(){ return this._orientation } set orientationPicture(orientation: PhotoOrientation){ this._orientation = orientation } get idAlbum(){ return this._id } set idAlbum(id: number){ this._id = id } get titleAlbum(){ return this._title } set titleAlbum(title: string){ this._title = title }

    Al momento de escribir el nombre del objeto, no vamos a acceder al atributo, sino al método:

    //* Estamos usando los métodos get y set y, no los atributos directamente picture.idPicture = 100 picture.titlePicture = 'Another title' album.titleAlbum = 'Title for an album' console.table({album})
    Andrés Felipe Eslava Zuluaga

    Andrés Felipe Eslava Zuluaga

    student•
    hace 5 años

    Interceptar un acceso a cualqueir miembro de la clase si éste es privado: Getters & Setters. Le dan un toque de accesibilidad, si es que es necesario, para poder acceder -> modificar -> retornar algo que se desee saber.

    export {} enum PhotoOrientation { Landscape, Portrait, Square, Panorama, }; class Picture { // properties private _id: number; private _title: string; private _orientation: PhotoOrientation; //constructor public constructor( id: number, title: string, orientation: PhotoOrientation ) { this._id = id; this._title = title; this._orientation = orientation; } //Performance private toString() { return `[id: ${this._id}, title: ${this._title}, orientation: ${this._orientation}]` } } class Album { private _id: string; private _title: string; private _pictures: Picture[]; public constructor( id: string, title: string ) { this._id = id; this._title = title; this._pictures = []; } get id() { return this._id } set id(id: string) {this._id = id} get title() { return this._title } set title(t: string) {this._title = t} get picture() { return this._pictures } set picture(pic:Picture[]) {this._pictures = pic} public addPicture(picture: Picture) { this._pictures.push(picture); } } let album: Album = new Album('stories-1', 'Photos of mine'); const newPic: Picture = new Picture(2, 'my new pic!', PhotoOrientation.Panorama); const new2Pic: Picture = new Picture(3, 'my 2nd new pic!', PhotoOrientation.Portrait); const new3Pic: Picture = new Picture(4, 'my 3rd new pic!', PhotoOrientation.Portrait); album.addPicture(newPic); album.addPicture(new2Pic); album.addPicture(new3Pic); console.log('album -> ', album);
    Jose Daniel Barría Reyes

    Jose Daniel Barría Reyes

    student•
    hace 6 años

    Metodos set y get: soporta los métodos accesores set y get como una forma de interceptar los accesos a los miembros privados de un objeto

    class Person { private _name:string constructor() get name(){ return this._name } set name(name: string){ this._name = name } }

    En nuestro objeto de clase person hariamos

    person.name
    Darwin Rodríguez

    Darwin Rodríguez

    student•
    hace 5 años

    Existirá alguna manera de que los getters y setters sean dinámicos? Algo así como, primero verificar si existe la propiedad y si existe aplicar el getter o el setter

      Irving Juárez

      Irving Juárez

      student•
      hace 4 años

      Pudieras hacer eso con un if statement...

    Boris Vargas Paucara

    Boris Vargas Paucara

    student•
    hace 6 años

    ¿Alguna forma de generar getters and setters de manera automática?

      Dennis David Arango Mandieta

      Dennis David Arango Mandieta

      student•
      hace 6 años

      En NetBeans después de declarar las variables das click derecho, insertar y seleccionas la opción de getters and Setters y el automáticamente los genera.

      Enrique Tecayehuatl

      Enrique Tecayehuatl

      student•
      hace 6 años

      Tienes que ser más descriptivo en lo que solicitas, empezando por el IDE, o editor, hay diferentes maneras de generar con snippets dependiendo de tu ambiente de desarrollo.

    fidel agustin fuentes

    fidel agustin fuentes

    student•
    hace 4 años

    gente una pregunta, cual es la diferencia entre definir un clase con una propiedad privada a la cual le aplicamos un metodo get y set , a directamente definirla como publica?

      Héctor Eduardo López Carballo

      Héctor Eduardo López Carballo

      student•
      hace 4 años

      Hola!

      Esto simplemente es útil al momento de escribir código, si haces un atributo privado estás obligando a los desarrolladores a que usen forzosamente la lógica que definas para modificar un atributo y no puedan cambiarlos por cualquier valor que quieran.

      En una función de get y set puedes poner validaciones que retornen un error cuando no se pasa el argumento adecuado, así facilitas el debugging y te proteges contra errores.

      Oscar Gomez

      Oscar Gomez

      student•
      hace 4 años

      Eso es algo que pensé bastante también. Como dijo el profesor, es un interceptor, o sea que te permite parar a mitad de camino cualquier valor que le quieran mandar a la función y si le pones un condicional como if, lo puedes validar y si cumple se asignará, y si no, no. Interceptor es la palabra clave. Fue una super revelación cuando me dí cuenta.

    Girlesa Quintero Rodríguez

    Girlesa Quintero Rodríguez

    student•
    hace 5 años

    Me pueden ayudar porfa con un ejemplo concreto en el que pueda entender bien por qué es útil poner getters y setters en vez de dejarlo público? Aún es confuso.

      Roger Carlos Ariel Alba

      Roger Carlos Ariel Alba

      student•
      hace 5 años

      Hola,

      Aquí hay una discusión que te puede ayudar.

      Girlesa Quintero Rodríguez

      Girlesa Quintero Rodríguez

      student•
      hace 5 años

      @CarlosAlba Mil gracias!

    Yolfry Bautista Reynoso

    Yolfry Bautista Reynoso

    student•
    hace 3 años

    private myclass: number | string public myclass2: number | string

    Wilmer Caiza

    Wilmer Caiza

    student•
    hace 5 años

    Saludos, si los objetos en TS se crean luego de consumir un servicio web, me resulta útil trabajar con get y set

    Gerson Montenegro

    Gerson Montenegro

    student•
    hace 5 años

    Tiene sentido crear un setter para un array de datos?

      Manuel Ojeda

      Manuel Ojeda

      student•
      hace 5 años

      Claro, se puede utilizar un setter para todas las propiedades de la clase sin importar su tipo de dato si es primitivo, arreglo, etc

      Gerson Montenegro

      Gerson Montenegro

      student•
      hace 5 años

      Gracias, @darkjeda, entiendo, pero su implementación sería tan simple como un

      set(value: []) { this.#_pictures = value; }

      Nunca me ha convenido del todo esta manera de hacerlo con este tipo de dato. Siento que algo falta.

      Por qué fue la única variable a la que no agregó _set _y get si lo estaba haciendo con todas las demás entonces?

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