CursosEmpresasBlogLiveConfPrecios

Principios de responsabilidad única

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

    10:54 min
  • 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

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

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
        Jose Daniel Barría Reyes

        Jose Daniel Barría Reyes

        student•
        hace 6 años

        Principio de responsabilidad unica. Idealmente un archivo deberia tener un proposito o responsabilidad unica: definir una clase, una interfaz, un enumerado, etc. Esto mejora la legibilidad de codigo, facilita la lectura, testing y favorece su mantenimiento.

        Utilizamos archivos separados y la utilizacion de import, export para lograr un poco mas de mantenibiilidad. Podemos usar tambien carpetas para separar nuestros archivos.

        Para observar una carpeta entera usamos:

        tsc --project myFolder --watch
          Moisés Manuel Morín Hevia

          Moisés Manuel Morín Hevia

          student•
          hace 5 años

          Buen resumen !

          Tanelo Mondaca Silva

          Tanelo Mondaca Silva

          student•
          hace 4 años

          Gracias, excelente resumen

        Victoria Ramirez Charles

        Victoria Ramirez Charles

        student•
        hace 5 años

        En el minuto 7:11 el maestro dice que para ir a la definición de la clase podemos presionar la tecla ctrl y luego hacemos click, otra forma seria posicionarnos encima de la clase y darle a f12.

          Miguel Peláez

          Miguel Peláez

          student•
          hace 5 años

          Indispensable ese tip para proyectos grandes.

          Moisés Manuel Morín Hevia

          Moisés Manuel Morín Hevia

          student•
          hace 5 años

          Seee, se pueden con clic, gracias por f12. Lo tendré en cuenta.

        Cesar Mauricio Ruíz Tulande

        Cesar Mauricio Ruíz Tulande

        student•
        hace 5 años

        es uso de la función findIndex() es útil para encontrar la posición de un ítem dentro de un arreglo, pero para el caso de eliminar dicho ítem del arreglo prefiero utilizar filter() que te retorna un nuevo arreglo sin el ítem a eliminar y evita así hacer validaciones y utilizar más funciones.

          Marcelo Oggero

          Marcelo Oggero

          student•
          hace 4 años

          Tambien estoy de acuerdo en usar filter en vez de splice. Por lo que acabo de leer se usa splice porque tiene mejor performance que filter.

        Luis Rivero

        Luis Rivero

        student•
        hace 5 años

        No sé que tanta diferencia en performance pueda haber entre utilizar findIndex() o filter(), pero sin dudas con filter() se ahorra mucho código.

        removeAlbum(id: number): void { const newArr = this.album.filter((a) => a.id !== id); this._album = newArr; }
          Jair Israel Avilés Eusebio

          Jair Israel Avilés Eusebio

          student•
          hace 4 años

          Con el metodo filter, se regresa un nuevo array como resultado de la funcion arrow dentro de esta.

          El metodo splice modifica el arreglo al que se le llama esta operacion.

          Si quieres compararlo en terminos de performance, te recomiendo entiendas el concepto de complejidad de espacio (notacion Big O) que define el uso de memoria de tu programa, pero para fines practicos esto tambien es una nueva alternativa.

        Dante Calderón

        Dante Calderón

        student•
        hace 5 años

        Ademas de esto, el SRP nos dice que una clase debe tener una sola responsabilidad unica y debe estar desacoplada. En este caso por ejemplo una mejora seria que el usuario no deberia saber como remover o agregar albumes, para esto creamos otra clase que se encarge solo de eso. https://code.tutsplus.com/tutorials/solid-part-1-the-single-responsibility-principle--net-36074

        Andrés Felipe Eslava Zuluaga

        Andrés Felipe Eslava Zuluaga

        student•
        hace 5 años
        • Como defender el Principio de Responsabilidad Única : Para defender el Principio de Responsabilidad Única en nuestro código podemos apoyarnos en mejorar dos aspectos del mismo. Estos son la cohesión y el acoplamiento, de forma que:
        1. Mantener una alta cohesión, es decir, mantener ‘unidas’ funcionalidades que estén relacionadas entre sí y mantener fuera aquello que no esté relacionado. El objetivo es aumentar la cohesión entre las cosas que cambian por las mismas razones.

        2. Mantener un bajo acoplamiento, es decir, reducir al máximo posible el grado de la relación de un clase o módulo con el resto, para favorecer crear código más fácilmente mantenible, extensible y testeable. El objetivo es disminuir el acoplamiento entre aquellas cosas que cambian de forma diferente.

        Estos dos aspectos favorecerá un código con funcionalidades más concretas y mejor especificadas. Reúne las cosas que cambian por las mismas razones. Separa las cosas que cambian por diferentes razones.

        fuente: click acá

        Miguel Angel Reyes Moreno

        Miguel Angel Reyes Moreno

        student•
        hace 5 años

        Todo se ve ahora mucho mejor :)

        Esto viene de SOLID, un principio de la POO.

        Julian Carelli

        Julian Carelli

        student•
        hace 5 años

        Yo hice el metodo un toque diferente, pero que funcíona de la misma manera :D

        Captura de pantalla de 2021-01-09 14-25-26.png
          Mario Barceló Sospedra

          Mario Barceló Sospedra

          student•
          hace 5 años

          Se entiende mejor (al menos yo) tu solución que la del profe :)

          Moisés Manuel Morín Hevia

          Moisés Manuel Morín Hevia

          student•
          hace 5 años

          Buena !!!!

        Adrián Antañón

        Adrián Antañón

        student•
        hace 5 años

        ¿Se considera Singleton un Antipatrón?

        He estado leyendo que Singleton es considerado por algunas personas un Antipattern (antipatrón),como por ejemplo este:

        " se usa demasiado, introduce restricciones innecesarias en situaciones en las que no se requiere realmente única instancia de una clase, y introduce estado global en una aplicación

        En resumen, el patrón Singleton hace que el código más complejo, menos útil, y un dolor real para re-uso o prueba. La eliminación de singletons puede ser difícil, pero es una tarea que vale la pena."

        Por lo que merece la pena conocerlo, pero no es tan útil como puede parecer?

        Muchas gracias por las respuestas!

          Aurelio ML

          Aurelio ML

          student•
          hace 5 años

          ¡Hola! En este video se habla sobre el tema y es muy interesante

          Aurelio ML

          Aurelio ML

          student•
          hace 5 años

          https://www.youtube.com/watch?v=-FRm3VPhseI

        Luis Alejandro Vera Hernandez

        Luis Alejandro Vera Hernandez

        student•
        hace 5 años

        En este punto me cuesta entender como entender el codigo cuando esta modularizado. Por donde deberia empezar a leerlo para poder entender el origen de dicho codigo?

          Marlon Enmanuel Montalvo Flores

          Marlon Enmanuel Montalvo Flores

          student•
          hace 5 años

          En mi opinión es algo que aprendes practicando, en cierto punto se vuelve intuitivo. Como consejo siempre trata de entender primero la arquitectura macro del proyecto, inicia revisando el punto de entrada (usualmente es index.js o App.js), sigue las importaciones hasta encontrar el encabezado, navegación, footer, cuerpo y secciones importantes de la página. Con esto en mente ya es más sencillo ubicar el módulo o componente que deseas modificar.

          Luis Alejandro Vera Hernandez

          Luis Alejandro Vera Hernandez

          student•
          hace 5 años

          Gracias Marlon, tu comentario me motiva a seguir en la practica para seguirlo aprendiendo

        Juan Pablo Gómez García

        Juan Pablo Gómez García

        student•
        hace 6 años

        Nunca había escuchado de esto, excelente

          Moisés Manuel Morín Hevia

          Moisés Manuel Morín Hevia

          student•
          hace 5 años

          Tampoco yo, esto hace un código más limpio.

          Jimmy Buriticá Londoño

          Jimmy Buriticá Londoño

          student•
          hace 4 años

          Lo he estado usando y se generan muchos archivos, la recomendación es crear carpetas para clasificar los diferentes archivos por clases, enumerado, interfaces.

        Elber Liebermen

        Elber Liebermen

        student•
        hace 4 años

        El método findIndex() ejecuta la función de callback una vez por cada índice del array hasta que encuentre uno donde callback devuelva un valor verdadero (eso es, un valor que fuerza un true).

        Si dicho elemento es encontrado, findIndex() inmediatamente devuelve el índice del elemento. Si la función callback nunca devuelve un valor verdadero (o el tamaño del array es 0), findIndex devuelve -1.

        Enrique Uribe

        Enrique Uribe

        student•
        hace 4 años

        es mas facil remover asi

        removeAlbum(album:Album){ this.album.filter(a => a.id !== album.id) }
          Omar Guadarrama

          Omar Guadarrama

          student•
          hace 4 años

          Solo recuerda que filter devuelve un nuevo arreglo, no modifica el arreglo original. Por lo tanto ahí no esta borrando nada.

        Alex hernandez mitre

        Alex hernandez mitre

        student•
        hace 4 años

        En éste puntooo te das cuenta que te encanta JS.

        Juan David Merchán Torres

        Juan David Merchán Torres

        student•
        hace 4 años

        Hola 👋

        Para mas informacion sobre los principios SOLID visitad aqui SOLID video. A mi sirvio un monton. Espero haberles aportado algo 🚀

          Javi Felices

          Javi Felices

          student•
          hace 4 años

          Dejo la url correcta

          SOLID vídeo

          https://www.youtube.com/watch?v=2X50sKeBAcQ   Un saludo.

        Moisés Manuel Morín Hevia

        Moisés Manuel Morín Hevia

        student•
        hace 5 años

        Principio de responsabilidad única Cara archivo tiene una responsabilidad, mejrando la legibilidad, lectura, testing & favorecer el mantemiento. Solid. Buenas prácticas de POO. Ctrl + clic en la clase me lleva al archivo.

        Juan Jiménez

        Juan Jiménez

        student•
        hace 5 años

        Interesante clase!

          Jorge Cruz Perez

          Jorge Cruz Perez

          student•
          hace 5 años

          La mejor, Luis es muy bueno, no es por ser mala onda, pero no me gusta el estilo de Leonidas trata de ser gracioso pero no expone adecuadamente sus ideas, sabe mucho eso no lo niego, y por experiencia cuando tome el curso profesional de JavaScript tambien toca Typescript pero definitivamente este curso es el mejor, incluso en you tube no hay nada igual

        Jose Nuñez

        Jose Nuñez

        student•
        hace 5 años

        La configuración ES5 en el tsconfig.ts era para que la salida de como resultado que ese código resultante corra en todos los navegadores, no entendía porque cambio la configuración a ES2015 en el min 10 mas allá de poder poder utilizar la función findIndex, pero creo que solo fue para eso. Ahora para que el código pueda seguir dando un resultado en ES5 y que corra en todos los navegadores se necesita hacer uso de Babel.

          Jimmy Buriticá Londoño

          Jimmy Buriticá Londoño

          student•
          hace 4 años

          Considero que ya no se debe pensar en ES5, lo mínimo que debes usar es ES6.

        Edwin Alberto Equihua Ochoa

        Edwin Alberto Equihua Ochoa

        student•
        hace 5 años

        Esto es como la Modularidad de Java, consiste en dividir los programas en mas clases para que así mismo sea mas fácil identificar problemas, una buena técnica.

          Moisés Manuel Morín Hevia

          Moisés Manuel Morín Hevia

          student•
          hace 5 años

          Totalmente de acuerdo, hace un códgo super limpio.

        Naldo Duran

        Naldo Duran

        student•
        hace 5 años

        n

          Moisés Manuel Morín Hevia

          Moisés Manuel Morín Hevia

          student•
          hace 5 años

          aldo