{"id":33031,"date":"2025-05-18T23:40:00","date_gmt":"2025-05-18T21:40:00","guid":{"rendered":"https:\/\/www.codemotion.com\/magazine\/?p=33031"},"modified":"2025-06-11T11:05:40","modified_gmt":"2025-06-11T09:05:40","slug":"flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps","status":"publish","type":"post","link":"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/desarrollo-movil\/flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps\/","title":{"rendered":"Flip the script: Dependency inversion in JS\/TS based mobile apps"},"content":{"rendered":"\n<p>Varias de las charlas de Codemotion Madrid 2025 tuvieron como objetivo ense\u00f1arles a los asistentes distintas t\u00e9cnicas y estrategias que les permitan dise\u00f1ar arquitecturas de software de alta calidad. Una de las m\u00e1s importantes es el <strong>principio de Inversi\u00f3n de Control (IoC),<\/strong> ideal a la hora de crear arquitecturas desacopladas y mantenibles a largo plazo.<\/p>\n\n\n\n<p>En la charla <strong>Flip the script: Dependency inversion in JS\/TS based mobile apps <\/strong>(en ingl\u00e9s), Samantha Campisi (Sr. Mobile Engineer) y Alejandro Weichandt (Sr. Mobile Engineer) de Lastminute.com nos explicaron las ventajas de aplicar t\u00e9cnicas de inversi\u00f3n de control, as\u00ed como estrategias que se pueden poner en pr\u00e1ctica en el desarrollo de aplicaciones m\u00f3viles.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-contexto-de-la-charla\">Contexto de la charla<\/h2>\n\n\n\n<p>Escribir aplicaciones m\u00f3viles de c\u00f3digo limpio, escalables y sostenibles a largo plazo deber\u00eda ser el principal objetivo de cualquier desarrollador mobile. Y aunque esto se puede lograr de muchas formas, no hay nada mejor que conocer algunos de los <strong>principios b\u00e1sicos del dise\u00f1o de software que <\/strong>nos ayuden a estructurar mejor nuestro c\u00f3digo.<\/p>\n\n\n\n<p>Estilos de arquitecturas como Clean Architecture, Hexagonal Architecture o DDD (Domain-Driven Design) han demostrado ser efectivos para construir aplicaciones robustas y mantenibles. Sin embargo, todos estos patrones comparten un concepto com\u00fan: la <strong>inversi\u00f3n de control,<\/strong> un principio que permite desacoplar los diferentes componentes de nuestras aplicaciones y hacerlas m\u00e1s flexibles.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-que-es-la-inversion-de-control\">\u00bfQu\u00e9 es la inversi\u00f3n de control?<\/h2>\n\n\n\n<p>La <strong>Inversi\u00f3n de Control (IoC)<\/strong> es un principio de dise\u00f1o que revierte la direcci\u00f3n tradicional de las dependencias en el c\u00f3digo. En lugar de que los m\u00f3dulos de alto nivel gestionen sus dependencias directamente, estas les son proporcionadas desde fuera.<\/p>\n\n\n\n<p>Este enfoque, conocido tambi\u00e9n por el sobrenombre de \u201c<strong>Principio de Hollywood\u201d<\/strong> (por aquello del ya te llamaremos), permite reducir el acoplamiento entre componentes, as\u00ed como que las diferentes partes de una aplicaci\u00f3n sean m\u00e1s reutilizables y f\u00e1ciles de probar.<\/p>\n\n\n\n<p>En consecuencia, esto ofrece la posibilidad de crear aplicaciones m\u00e1s flexibles y adaptables a los cambios. Al promover una mejor separaci\u00f3n de responsabilidades, el c\u00f3digo resulta m\u00e1s f\u00e1cil de escribir, entender y mantener. La implementaci\u00f3n de IoC es especialmente \u00fatil en <strong>aplicaciones m\u00f3viles escritas en JavaScript o TypeScript,<\/strong> donde la complejidad puede crecer r\u00e1pidamente si no se gestiona adecuadamente.<\/p>\n\n\n\n<p>No podemos olvidar que IoC es a su vez la base del principio de <strong>Inversi\u00f3n de Dependencias<\/strong> (Dependency Inversion Principle, DIP), el cual establece que los m\u00f3dulos de alto nivel no deben depender de los m\u00f3dulos de bajo nivel, sino que ambos deben depender de abstracciones.<\/p>\n\n\n\n<p>Esto permite <strong>separar la implementaci\u00f3n de la l\u00f3gica de negocio de la infraestructura t\u00e9cnica<\/strong>, permitiendo que cada capa evolucione de manera independiente. Esta separaci\u00f3n facilita la adaptaci\u00f3n a cambios en los requisitos del negocio sin afectar a la infraestructura subyacente, y viceversa.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-que-tecnicas-y-estrategias-existen-para-aplicar-inversion-de-dependencias-en-el-diseno-de-arquitecturas-moviles\">\u00bfQu\u00e9 t\u00e9cnicas y estrategias existen para aplicar inversi\u00f3n de dependencias en el dise\u00f1o de arquitecturas m\u00f3viles?<\/h2>\n\n\n\n<p>Cada una con sus pros y contras, en la actualidad existen <strong>varias estrategias y t\u00e9cnicas para aplicar inversi\u00f3n de dependencia<\/strong>s en el dise\u00f1o de arquitecturas para aplicaciones m\u00f3viles. Algunas de las m\u00e1s populares son:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Soluciones manuales<\/strong>: son simples de implementar, ya que por lo general no necesitan de librer\u00edas externas. Es habitual que los desarrolladores utilicen Context API, singletons inyectados y funciones currificadas. Hay que tener en cuenta que, a pesar de su simpleza, pueden volverse dif\u00edciles de mantener y escalar a medida que los proyectos crecen.<\/li>\n\n\n\n<li><strong>Service Locator:<\/strong> es un patr\u00f3n de dise\u00f1o que centraliza la gesti\u00f3n de dependencias en un solo lugar. Este patr\u00f3n proporciona un punto de acceso global para obtener las dependencias necesarias, aunque puede hacer que el c\u00f3digo sea menos transparente y m\u00e1s dif\u00edcil de probar. A menudo se implementa como una alternativa m\u00e1s sencilla a la inyecci\u00f3n de dependencias completas.<\/li>\n\n\n\n<li><strong>Inyecci\u00f3n de dependencias (DI<\/strong>): es una t\u00e9cnica m\u00e1s robusta y flexible que implementa el principio de inversi\u00f3n de control mediante contenedores DI espec\u00edficos. Frameworks como InversifyJS o TypeDI ofrecen caracter\u00edsticas avanzadas como inyecci\u00f3n autom\u00e1tica, gesti\u00f3n del ciclo de vida de las dependencias y resoluci\u00f3n autom\u00e1tica.<\/li>\n\n\n\n<li><strong>Librer\u00edas externas<\/strong>: existen numerosas librer\u00edas de c\u00f3digo abierto dise\u00f1adas espec\u00edficamente para facilitar la inversi\u00f3n de dependencias en aplicaciones JavaScript\/TypeScript. Algunas de las m\u00e1s populares son InversifyJS o.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-la-charla-flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps\">La charla: Flip the script: Dependency inversion in JS\/TS based mobile apps<\/h2>\n\n\n\n<p>Alejandro Weichandt (Senior Mobile Engineer en Lastminute.com) y Samantha Campisi (Senior mobile engineer en Lastminute.com) nos ofrecieron una interesante charla alrededor de estos conceptos tan relevantes. El objetivo es que los asistentes pudiesen aprender c\u00f3mo aplicar buenas estrategias de <strong>inyecci\u00f3n de dependencias para garantizar una arquitectura escalable mediante el uso de c\u00f3digo limpio.<\/strong><\/p>\n\n\n\n<p>Ambos nos explicaron las <strong>ventajas de aplicar t\u00e9cnicas de inversi\u00f3n de control y diferentes estrategias para ponerlas en pr\u00e1ctica en proyectos de desarrollo de aplicaciones m\u00f3viles<\/strong>. El objetivo final fue que los asistentes aprendan a dise\u00f1ar dominios lo m\u00e1s independientes y flexibles posibles, sin perder nunca de vista la l\u00f3gica y los requisitos empresariales.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-los-ponentes\">Los ponentes<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.linkedin.com\/in\/samantha-campisi-9a70b5a1\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Samantha Campisi<\/strong> <\/a>(Senior mobile engineer at Lastminute.com): Samantha ha estado inmersa en el mundo m\u00f3vil con React Native durante los \u00faltimos 8 a\u00f1os. Ha trabajado en una gran variedad de apps, desde redes sociales a crypto wallets pasando por marketplaces online y ahora en el acompa\u00f1amiento y gesti\u00f3n de viajes.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><a href=\"https:\/\/www.linkedin.com\/in\/alejandro-weichandt-61ba45b1\/\">Alejandro Weichandt<\/a> <\/strong>(Senior Mobile Engineer at Lastminute.com): trabajando con m\u00f3viles desde su primer trabajo, llegando a trabajar con todo tipo de plataformas, desde Apple y Android, a Blackberry y todos los dem\u00e1s dispositivos m\u00f3viles Java ME, as\u00ed como distintas industrias, pasando por la escena del gaming, luego fintech, y en la actualidad en el sector viajes. Le apasiona hablar de desarrollo de software en general.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Varias de las charlas de Codemotion Madrid 2025 tuvieron como objetivo ense\u00f1arles a los asistentes distintas t\u00e9cnicas y estrategias que les permitan dise\u00f1ar arquitecturas de software de alta calidad. Una de las m\u00e1s importantes es el principio de Inversi\u00f3n de Control (IoC), ideal a la hora de crear arquitecturas desacopladas y mantenibles a largo plazo.&#8230; <a class=\"more-link\" href=\"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/desarrollo-movil\/flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps\/\">Read more<\/a><\/p>\n","protected":false},"author":64,"featured_media":29238,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","_uag_custom_page_level_css":"","_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[10640],"tags":[10747],"collections":[],"class_list":{"0":"post-33031","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-desarrollo-movil","8":"tag-desarrollo-web","9":"entry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.9 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Flip the script: Dependency inversion in JS\/TS based mobile apps<\/title>\n<meta name=\"description\" content=\"Samantha Campisi y Alejandro Weichandt nos explicar\u00e1n las ventajas de aplicar t\u00e9cnicas de inversi\u00f3n de control y c\u00f3mo aplicarlas en el desarrollo de aplicaciones m\u00f3viles\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/desarrollo-movil\/flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Flip the script: Dependency inversion in JS\/TS based mobile apps\" \/>\n<meta property=\"og:description\" content=\"Samantha Campisi y Alejandro Weichandt nos explicar\u00e1n las ventajas de aplicar t\u00e9cnicas de inversi\u00f3n de control y c\u00f3mo aplicarlas en el desarrollo de aplicaciones m\u00f3viles\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/desarrollo-movil\/flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps\/\" \/>\n<meta property=\"og:site_name\" content=\"Codemotion Magazine\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Codemotion.Italy\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-05-18T21:40:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-11T09:05:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/08\/DALL\u00b7E-2024-08-08-09.56.54-A-widescreen-8-bit-style-image-depicting-a-multi-step-form-in-an-Angular-development-environment.-The-image-should-feature-a-series-of-form-steps-disp.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1792\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Codemotion\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:site\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Codemotion\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/frontend-es\\\/desarrollo-movil\\\/flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/frontend-es\\\/desarrollo-movil\\\/flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps\\\/\"},\"author\":{\"name\":\"Codemotion\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/person\\\/201bb98b02412383686cced7521b861c\"},\"headline\":\"Flip the script: Dependency inversion in JS\\\/TS based mobile apps\",\"datePublished\":\"2025-05-18T21:40:00+00:00\",\"dateModified\":\"2025-06-11T09:05:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/frontend-es\\\/desarrollo-movil\\\/flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps\\\/\"},\"wordCount\":1035,\"publisher\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/frontend-es\\\/desarrollo-movil\\\/flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/DALL\u00b7E-2024-08-08-09.56.54-A-widescreen-8-bit-style-image-depicting-a-multi-step-form-in-an-Angular-development-environment.-The-image-should-feature-a-series-of-form-steps-disp.webp\",\"keywords\":[\"Desarrollo web\"],\"articleSection\":[\"Desarrollo m\u00f3vil\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/frontend-es\\\/desarrollo-movil\\\/flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps\\\/\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/frontend-es\\\/desarrollo-movil\\\/flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps\\\/\",\"name\":\"Flip the script: Dependency inversion in JS\\\/TS based mobile apps\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/frontend-es\\\/desarrollo-movil\\\/flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/frontend-es\\\/desarrollo-movil\\\/flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/DALL\u00b7E-2024-08-08-09.56.54-A-widescreen-8-bit-style-image-depicting-a-multi-step-form-in-an-Angular-development-environment.-The-image-should-feature-a-series-of-form-steps-disp.webp\",\"datePublished\":\"2025-05-18T21:40:00+00:00\",\"dateModified\":\"2025-06-11T09:05:40+00:00\",\"description\":\"Samantha Campisi y Alejandro Weichandt nos explicar\u00e1n las ventajas de aplicar t\u00e9cnicas de inversi\u00f3n de control y c\u00f3mo aplicarlas en el desarrollo de aplicaciones m\u00f3viles\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/frontend-es\\\/desarrollo-movil\\\/flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/frontend-es\\\/desarrollo-movil\\\/flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/frontend-es\\\/desarrollo-movil\\\/flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/DALL\u00b7E-2024-08-08-09.56.54-A-widescreen-8-bit-style-image-depicting-a-multi-step-form-in-an-Angular-development-environment.-The-image-should-feature-a-series-of-form-steps-disp.webp\",\"contentUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/DALL\u00b7E-2024-08-08-09.56.54-A-widescreen-8-bit-style-image-depicting-a-multi-step-form-in-an-Angular-development-environment.-The-image-should-feature-a-series-of-form-steps-disp.webp\",\"width\":1792,\"height\":1024,\"caption\":\"multi step form reactjs\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/frontend-es\\\/desarrollo-movil\\\/flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Frontend\",\"item\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/frontend-es\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Desarrollo m\u00f3vil\",\"item\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/es\\\/frontend-es\\\/desarrollo-movil\\\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Flip the script: Dependency inversion in JS\\\/TS based mobile apps\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#website\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/\",\"name\":\"Codemotion Magazine\",\"description\":\"We code the future. Together\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#organization\",\"name\":\"Codemotion\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/codemotionlogo.png\",\"contentUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/codemotionlogo.png\",\"width\":225,\"height\":225,\"caption\":\"Codemotion\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/Codemotion.Italy\\\/\",\"https:\\\/\\\/x.com\\\/CodemotionIT\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/person\\\/201bb98b02412383686cced7521b861c\",\"name\":\"Codemotion\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/cropped-codemotionlogo-150x150.png\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/cropped-codemotionlogo-150x150.png\",\"contentUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/cropped-codemotionlogo-150x150.png\",\"caption\":\"Codemotion\"},\"description\":\"Articles wirtten by the Codemotion staff. Tech news, inspiration, latest treends in software development and more.\",\"sameAs\":[\"https:\\\/\\\/x.com\\\/CodemotionIT\"],\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/author\\\/codemotion-2\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Flip the script: Dependency inversion in JS\/TS based mobile apps","description":"Samantha Campisi y Alejandro Weichandt nos explicar\u00e1n las ventajas de aplicar t\u00e9cnicas de inversi\u00f3n de control y c\u00f3mo aplicarlas en el desarrollo de aplicaciones m\u00f3viles","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/desarrollo-movil\/flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps\/","og_locale":"en_US","og_type":"article","og_title":"Flip the script: Dependency inversion in JS\/TS based mobile apps","og_description":"Samantha Campisi y Alejandro Weichandt nos explicar\u00e1n las ventajas de aplicar t\u00e9cnicas de inversi\u00f3n de control y c\u00f3mo aplicarlas en el desarrollo de aplicaciones m\u00f3viles","og_url":"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/desarrollo-movil\/flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps\/","og_site_name":"Codemotion Magazine","article_publisher":"https:\/\/www.facebook.com\/Codemotion.Italy\/","article_published_time":"2025-05-18T21:40:00+00:00","article_modified_time":"2025-06-11T09:05:40+00:00","og_image":[{"width":1792,"height":1024,"url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/08\/DALL\u00b7E-2024-08-08-09.56.54-A-widescreen-8-bit-style-image-depicting-a-multi-step-form-in-an-Angular-development-environment.-The-image-should-feature-a-series-of-form-steps-disp.webp","type":"image\/webp"}],"author":"Codemotion","twitter_card":"summary_large_image","twitter_creator":"@CodemotionIT","twitter_site":"@CodemotionIT","twitter_misc":{"Written by":"Codemotion","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/desarrollo-movil\/flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps\/#article","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/desarrollo-movil\/flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps\/"},"author":{"name":"Codemotion","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/201bb98b02412383686cced7521b861c"},"headline":"Flip the script: Dependency inversion in JS\/TS based mobile apps","datePublished":"2025-05-18T21:40:00+00:00","dateModified":"2025-06-11T09:05:40+00:00","mainEntityOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/desarrollo-movil\/flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps\/"},"wordCount":1035,"publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/desarrollo-movil\/flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/08\/DALL\u00b7E-2024-08-08-09.56.54-A-widescreen-8-bit-style-image-depicting-a-multi-step-form-in-an-Angular-development-environment.-The-image-should-feature-a-series-of-form-steps-disp.webp","keywords":["Desarrollo web"],"articleSection":["Desarrollo m\u00f3vil"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/desarrollo-movil\/flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps\/","url":"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/desarrollo-movil\/flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps\/","name":"Flip the script: Dependency inversion in JS\/TS based mobile apps","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/desarrollo-movil\/flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps\/#primaryimage"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/desarrollo-movil\/flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/08\/DALL\u00b7E-2024-08-08-09.56.54-A-widescreen-8-bit-style-image-depicting-a-multi-step-form-in-an-Angular-development-environment.-The-image-should-feature-a-series-of-form-steps-disp.webp","datePublished":"2025-05-18T21:40:00+00:00","dateModified":"2025-06-11T09:05:40+00:00","description":"Samantha Campisi y Alejandro Weichandt nos explicar\u00e1n las ventajas de aplicar t\u00e9cnicas de inversi\u00f3n de control y c\u00f3mo aplicarlas en el desarrollo de aplicaciones m\u00f3viles","breadcrumb":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/desarrollo-movil\/flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/desarrollo-movil\/flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/desarrollo-movil\/flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps\/#primaryimage","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/08\/DALL\u00b7E-2024-08-08-09.56.54-A-widescreen-8-bit-style-image-depicting-a-multi-step-form-in-an-Angular-development-environment.-The-image-should-feature-a-series-of-form-steps-disp.webp","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/08\/DALL\u00b7E-2024-08-08-09.56.54-A-widescreen-8-bit-style-image-depicting-a-multi-step-form-in-an-Angular-development-environment.-The-image-should-feature-a-series-of-form-steps-disp.webp","width":1792,"height":1024,"caption":"multi step form reactjs"},{"@type":"BreadcrumbList","@id":"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/desarrollo-movil\/flip-the-script-dependency-inversion-in-js-ts-based-mobile-apps\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.codemotion.com\/magazine\/"},{"@type":"ListItem","position":2,"name":"Frontend","item":"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/"},{"@type":"ListItem","position":3,"name":"Desarrollo m\u00f3vil","item":"https:\/\/www.codemotion.com\/magazine\/es\/frontend-es\/desarrollo-movil\/"},{"@type":"ListItem","position":4,"name":"Flip the script: Dependency inversion in JS\/TS based mobile apps"}]},{"@type":"WebSite","@id":"https:\/\/www.codemotion.com\/magazine\/#website","url":"https:\/\/www.codemotion.com\/magazine\/","name":"Codemotion Magazine","description":"We code the future. Together","publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.codemotion.com\/magazine\/#organization","name":"Codemotion","url":"https:\/\/www.codemotion.com\/magazine\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","width":225,"height":225,"caption":"Codemotion"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Codemotion.Italy\/","https:\/\/x.com\/CodemotionIT"]},{"@type":"Person","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/201bb98b02412383686cced7521b861c","name":"Codemotion","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/cropped-codemotionlogo-150x150.png","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/cropped-codemotionlogo-150x150.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/cropped-codemotionlogo-150x150.png","caption":"Codemotion"},"description":"Articles wirtten by the Codemotion staff. Tech news, inspiration, latest treends in software development and more.","sameAs":["https:\/\/x.com\/CodemotionIT"],"url":"https:\/\/www.codemotion.com\/magazine\/author\/codemotion-2\/"}]}},"featured_image_src":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/08\/DALL\u00b7E-2024-08-08-09.56.54-A-widescreen-8-bit-style-image-depicting-a-multi-step-form-in-an-Angular-development-environment.-The-image-should-feature-a-series-of-form-steps-disp-600x400.webp","featured_image_src_square":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/08\/DALL\u00b7E-2024-08-08-09.56.54-A-widescreen-8-bit-style-image-depicting-a-multi-step-form-in-an-Angular-development-environment.-The-image-should-feature-a-series-of-form-steps-disp-600x600.webp","author_info":{"display_name":"Codemotion","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/codemotion-2\/"},"uagb_featured_image_src":{"full":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/08\/DALL\u00b7E-2024-08-08-09.56.54-A-widescreen-8-bit-style-image-depicting-a-multi-step-form-in-an-Angular-development-environment.-The-image-should-feature-a-series-of-form-steps-disp.webp",1792,1024,false],"thumbnail":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/08\/DALL\u00b7E-2024-08-08-09.56.54-A-widescreen-8-bit-style-image-depicting-a-multi-step-form-in-an-Angular-development-environment.-The-image-should-feature-a-series-of-form-steps-disp-150x150.webp",150,150,true],"medium":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/08\/DALL\u00b7E-2024-08-08-09.56.54-A-widescreen-8-bit-style-image-depicting-a-multi-step-form-in-an-Angular-development-environment.-The-image-should-feature-a-series-of-form-steps-disp-300x171.webp",300,171,true],"medium_large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/08\/DALL\u00b7E-2024-08-08-09.56.54-A-widescreen-8-bit-style-image-depicting-a-multi-step-form-in-an-Angular-development-environment.-The-image-should-feature-a-series-of-form-steps-disp-768x439.webp",768,439,true],"large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/08\/DALL\u00b7E-2024-08-08-09.56.54-A-widescreen-8-bit-style-image-depicting-a-multi-step-form-in-an-Angular-development-environment.-The-image-should-feature-a-series-of-form-steps-disp-1024x585.webp",1024,585,true],"1536x1536":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/08\/DALL\u00b7E-2024-08-08-09.56.54-A-widescreen-8-bit-style-image-depicting-a-multi-step-form-in-an-Angular-development-environment.-The-image-should-feature-a-series-of-form-steps-disp-1536x878.webp",1536,878,true],"2048x2048":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/08\/DALL\u00b7E-2024-08-08-09.56.54-A-widescreen-8-bit-style-image-depicting-a-multi-step-form-in-an-Angular-development-environment.-The-image-should-feature-a-series-of-form-steps-disp.webp",1792,1024,false],"small-home-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/08\/DALL\u00b7E-2024-08-08-09.56.54-A-widescreen-8-bit-style-image-depicting-a-multi-step-form-in-an-Angular-development-environment.-The-image-should-feature-a-series-of-form-steps-disp-100x100.webp",100,100,true],"sidebar-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/08\/DALL\u00b7E-2024-08-08-09.56.54-A-widescreen-8-bit-style-image-depicting-a-multi-step-form-in-an-Angular-development-environment.-The-image-should-feature-a-series-of-form-steps-disp-180x128.webp",180,128,true],"genesis-singular-images":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/08\/DALL\u00b7E-2024-08-08-09.56.54-A-widescreen-8-bit-style-image-depicting-a-multi-step-form-in-an-Angular-development-environment.-The-image-should-feature-a-series-of-form-steps-disp-896x504.webp",896,504,true],"archive-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/08\/DALL\u00b7E-2024-08-08-09.56.54-A-widescreen-8-bit-style-image-depicting-a-multi-step-form-in-an-Angular-development-environment.-The-image-should-feature-a-series-of-form-steps-disp-400x225.webp",400,225,true],"gb-block-post-grid-landscape":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/08\/DALL\u00b7E-2024-08-08-09.56.54-A-widescreen-8-bit-style-image-depicting-a-multi-step-form-in-an-Angular-development-environment.-The-image-should-feature-a-series-of-form-steps-disp-600x400.webp",600,400,true],"gb-block-post-grid-square":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2024\/08\/DALL\u00b7E-2024-08-08-09.56.54-A-widescreen-8-bit-style-image-depicting-a-multi-step-form-in-an-Angular-development-environment.-The-image-should-feature-a-series-of-form-steps-disp-600x600.webp",600,600,true]},"uagb_author_info":{"display_name":"Codemotion","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/codemotion-2\/"},"uagb_comment_info":0,"uagb_excerpt":"Varias de las charlas de Codemotion Madrid 2025 tuvieron como objetivo ense\u00f1arles a los asistentes distintas t\u00e9cnicas y estrategias que les permitan dise\u00f1ar arquitecturas de software de alta calidad. Una de las m\u00e1s importantes es el principio de Inversi\u00f3n de Control (IoC), ideal a la hora de crear arquitecturas desacopladas y mantenibles a largo plazo.&#8230;&hellip;","lang":"es","_links":{"self":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/33031","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/users\/64"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/comments?post=33031"}],"version-history":[{"count":2,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/33031\/revisions"}],"predecessor-version":[{"id":33309,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/33031\/revisions\/33309"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media\/29238"}],"wp:attachment":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media?parent=33031"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/categories?post=33031"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/tags?post=33031"},{"taxonomy":"collections","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/collections?post=33031"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}