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
  • 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
    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 3 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 4 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 4 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 4 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 5 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 3 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

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