🛑 4 cosas a EVITAR en TypeScript + 1 en JavaScript (ÂĄPero no estoy de acuerdo en todas! ðŸ˜ą)

āđāļŠāļĢāđŒ
āļāļąāļ‡
  • āđ€āļœāļĒāđāļžāļĢāđˆāđ€āļĄāļ·āđˆāļ­ 4 āļ˜.āļ„. 2024

āļ„āļ§āļēāļĄāļ„āļīāļ”āđ€āļŦāđ‡āļ™ • 57

  • @alejandrodanieloliva7236
    @alejandrodanieloliva7236 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§ +34

    Desde que aprendi typescript y nunca mas volvi a codear en js. Las empresas lo piden y suma bastante saber typescript

  • @Rolandistico
    @Rolandistico 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§ +5

    Hay un caso de uso concreto donde los namespaces son una bendiciÃģn.
    En NGXS a la hora de crear las acciones, que son clases y que tienen todo el sentido tener todos en un Único archivo, el namespace ayuda a poder encapsular todas estas clases en un Único namespace que funciona como una especie de clase padre estÃĄtica donde residen todas las clases de cada una de las acciones y no tener que importarlas una a una, sino con importar todo el namespace ya tienes acceso a todas las acciones

    • @carlosterrazas8913
      @carlosterrazas8913 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

      yo creo que cuando el proyecto es muy gigante. es recomendado usar namespace. pero si es un proyecto mediano o pequeÃąo. es mejor hacer los import| export.

  • @thepalogaming1913
    @thepalogaming1913 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§ +11

    Yo despues de ver 5 segundos de video: Muy buen video, sigue asi

  • @mateo1511
    @mateo1511 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§ +3

    El enum tiene un downside no mencionado, y es que si lo defines sin usar const, se transpila en un objeto con todos los key: values, pero si lo defines con const, solo se compilan los usos del mismo. Interesante, no te parece?

  • @maw2630
    @maw2630 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§ +5

    Utilizar namespaces puede ser una muy buena prÃĄctica para definir tipos

    • @LuPaz16
      @LuPaz16 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

      Yo cuando aprendi Unity con C# y vi los namespace tenia miedo. Hasta el dia de hoy sigo sin entender para que sirven pero mejor los tengo ahi sin tocar nada

  • @lacuevadelinsecto
    @lacuevadelinsecto āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§ +1

    Estoy de acuerdo con todo lo que se expone aquí, aunque podría opinar acerca de los namespaces si se me permite.
    Estos son mÃĄs una forma de organizar proyectos en los que existe una gran cantidad de clases que muchas veces no se sabe de donde vienen, si son nuestras o de librerías third party.
    No es comÚn en Javascript/Typescript pero es una prÃĄctica que se lleva a cabo de antaÃąo un lenguajes como C# y Java (los padres de Typescript). Aunque entiendo que Javascript ya contaba con mÃģdulos que hacían algo muy similar.
    Es un error pensar que un namespace solo puede vivir en un archivo. Y La verdad sería mala prÃĄctica tener todas las clases/mÃĐtods de un namespace en un mismo archivo. Mis condolencias al que tenga que mantener eso.
    Un ejemplo Útil podría ser que si escribo una librería de conversiÃģn de archivos multimedia, podría tener los siguientes archivos.
    - namespace Converter.Audio:
    - - MP3Converter.ts : namespace Converter.Audio { export class MP3Converter { ... } }
    - - OGGConverter.ts : namespace Converter.Audio { export class OGGConverter { ... } }
    - namespace Converter.Video:
    - - MP4Converter.ts : namespace Converter.Video { export class MP4Converter { ... } }
    - - MOVConverter.ts : namespace Converter.Video { export class MOVConverter{ ... } }
    Y para usarlo en mi "codigo cliente" sería:
    import Audio = Converter.Audio; // imports
    import Video = Converter.Video; // imports
    ... { code here } ...
    new Audio.MP3Converter();
    new Audio.OGGConverter();
    y...
    new Video.MP4Converter();
    new Video.MOVConverter();
    ... { code here } ...
    Sinceramente lo Único que no me gusta de esto, es tener que llamar al namespace antes de llamar a la clase, pero tiene sentido para evitar que dos clases con el mismo nombre en diferentes "paquetes" entren en conflicto.

  • @rober5461
    @rober5461 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§ +2

    confirmo el ejercicio de la prueba tecnica 22:03

  • @carlossolorzano1327
    @carlossolorzano1327 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§ +1

    Cual es el nombre del tema para visual code que usas amigo ?

  • @Yousudame
    @Yousudame 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§ +3

    solo se eliminaria si es un 'const enum', de otra forma usa un diccionario

  • @franchozaz
    @franchozaz 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§ +1

    Soy fan de tus videos... DespuÃĐs de escuchar el video me he quedado con la mosca sobre los decoradores. Estaría genial que hicieras un video explicativo porque es algo interesante. ÂĄGracias! Y enhorabuena por el canal!! Happy coding!

    • @SimaDamian
      @SimaDamian 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

      Es que no entiendo porque mezclar los usos. Una cosa es que un framework te de decoradores para extender clases propiedades etc para poder hacer cosas en automÃĄtico (definidas por el framework) y otra es que uno de ponga constante a programar todo con decoradores.

  • @psicodelico6
    @psicodelico6 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§ +1

    Decorator es un patrÃģn de diseÃąo que permite agregar responsabilidades de manera dinamica

  • @dangelomedina3091
    @dangelomedina3091 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§ +7

    @midulive midu, tengo entendido que los emuns de typescript se compilan a JS, en forma de funcion. me parece haberlo visto de hecho en playground oficial, asi que no tiene costo 0. saludos!

    • @sebastianestrada1311
      @sebastianestrada1311 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

      Interesante, en tu opiniÃģn es buena o mala prÃĄctica?, donde usaste el playground?

  • @jotapedro13
    @jotapedro13 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

    Buenas, has visto los modulos federados, vas a sacar video de ellos?

  • @kevinat71
    @kevinat71 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

    yo tengo un problema con el linter y los enums... siempre me dicen que el valor no se estÃĄ usando... cual seria el problema?
    :thinking

  • @jethrangomez1313
    @jethrangomez1313 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§ +2

    Aquí en MÃĐxico cuando uno dice "Si no les gusta, pues nada" es "Si no les gusta, pues a chingar a m4dre", cuando lo dices pienso que dirÃĄs eso jajajajajaja excelente video

  • @LuisMarinAguilera
    @LuisMarinAguilera 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

    Esbuild es una gran herramienta para transpilar typescript super rÃĄpido, pero no soporta algunas cosas de typescript como los decoradores.

  • @ariel._.9186
    @ariel._.9186 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

    Los namespaces podrías usaarlos como en c#

  • @LaloAlvarez
    @LaloAlvarez 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

    Un namespace no solo es usado para encapsular funcionalidades, de hecho esa cualidad es secundaria. El objetivo real de un namespace es poder definir una funciÃģn con el mismo nombre y parÃĄmetros pero con diferente implementaciÃģn en 2 o mÃĄs mÃģdulos. Claro que estÃĄ opciÃģn es aplicable cuando el polimorfismo no puede ser usado.
    Un buen ejemplo de uso de namespace es cuando se necesita enviar informaciÃģn por medio de diferentes canales de comunicaciÃģn, los cuales siempre tienen las mismas funcionalidades, get, post, send, receive etc, pero con la diferencia de que la implementacion para cada canal es totalmente diferente y usan diferentes APIs. en ese caso el polimorfismo no es aplicable solamente se puede resolver con namespaces, claro, si es que no se quiere tener un nombre de funciÃģn diferente para cada canal de comunicaciÃģn.
    namespace Serial
    {
    export function receive(s: string){
    //implementaciÃģn para recibir data por puerto serial
    }
    }
    namespace Socket
    {
    export function receive(s: string){
    //implementaciÃģn para recibir data por socket
    }
    }

    • @YusufSalahAdDin
      @YusufSalahAdDin 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§ +1

      Esto viene de C++, verdad? o recuerdo mal.

  • @Murzbul
    @Murzbul āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

    Muy buen video! Concuerdo en que todas las razones para no usar Typescript no tienen sentido.
    Entiendo que este video tiene bastante tiempo pero realmente no estoy para nada de acuerdo respecto a las properties.
    Es importante entender desde mi punto de vista que aclaraste respecto a JS pero por otro lado es importante entender para que sirven, el rol de las properties es para poder generar abstracciones en donde su especificacion este 100% separada de su implementacion. Claramente este concepto en JS no tiene mucho sentido pero en Typescript cobra una fuerza muy grande ya que podes tener diferentes implementaciones que respeten una misma interfaz en donde su estado puede ser diferente.

  • @clystian
    @clystian 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§ +1

    Lo típico, si quieres algo similar a enums usar propiedades estÃĄticas

  • @ariel._.9186
    @ariel._.9186 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

    private verboso? El private es unaa sintaxis comÚn de los lenguajes de programaciÃģn orientados a objetos, y los lenguajes de programaciÃģn orientados a objetos de por si son verbosos .Luego vamos a tener tipos de datos de javascript como: i, f, d, s, da, b, y c, para que no sean tan verbosos porque int, float, double, string, date, boolean y char son verbosos.

    • @mamaloyoutube
      @mamaloyoutube 2 āļ§āļąāļ™āļ—āļĩāđˆāļœāđˆāļēāļ™āļĄāļē

      TÚ lo dijiste, para esos lenguajes, JavaScript no es un lenguaje orientado a objetos, sino a prototipos. Me encanta C#, pero son diferentes; tambiÃĐn, el # permite identificar visualmente una propiedad privada al usarse y no solo al declararse, Útil en un lenguaje dinÃĄmico como JS.

  • @JoseLuis-pp3ic
    @JoseLuis-pp3ic 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

    Minudev , excelente aporte y video!!, no me digas que te pasaste ya a typescript o le estas hechando ojitos para usarlo pronto en tu dia a dia?? ðŸĪĢðŸĪĢ

  • @gustavos5338
    @gustavos5338 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§ +1

    Js deberia ser ts nativo sin transpilador, y al menos dejar las malas prÃĄcticas en js he encontrado code que madre mia calladito me quede para no discutir o caer mal a los otro programadores al final node debería permitir de forma nativa y el tipado debe estar en tiempo de ejcucion y la llamada de error por que muchas veces no coincide la linea de error del codigo con el transpilado

  • @axeldearias3073
    @axeldearias3073 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§ +1

    A mi no me gustan los enums porque tenes que exportarlos por toda la aplicaciÃģn. Prefiero declarar un type con ORs de las cadenas vÃĄlidas

    • @SimaDamian
      @SimaDamian 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§ +1

      Yo pienso parecido. No me funciona igual que otro lenguaje. Y aparte dÃģnde lo necesite me sirviÃģ mucho usar keyoff en vez de un enum.

  • @RobertoGarcia-gs9ut
    @RobertoGarcia-gs9ut 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§ +6

    Los decoradores muchas veces rompen SOLID porque hacen magias que dotan de segundas finalidades a una clase, un repositorio es un repositorio no es un repositorio que a su vez publica mensajes en rabbit y que a su vez manda un mail
    Las cosas tienen su razÃģn de ser y su sitio donde ir, no confundamos resolutividad con chapuceria
    En cuanto a lo de private estoy en desacuerdo porque mejor un codigo que se explica solo que un cÃģdigo que hay que adivinar, hay que programar tambiÃĐn pensando en los demÃĄs y si viene un junior al equipo mejor que de primeras sepa que es privado porque lo pone y luego que aprenda con el hash si quiere pero que sepa el trasfondo del asunto

    • @SimaDamian
      @SimaDamian 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§ +2

      No es necesario aplicar Solid a todo. Aparte la funcionalidad de un decorador de puede disfrutar a nivel framework. No es tan del programar un decorador todos los días sino usarlo de seguido.

  • @sniperdaoud
    @sniperdaoud āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

    buen video🎉

  • @ricardorien
    @ricardorien 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

    Eres un duro!

  • @jseh_
    @jseh_ āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

    lo de los enums creo ya lo solucionaron, ahora ya estan fuertemente tipados

  • @osmarugarte7182
    @osmarugarte7182 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§ +3

    en lo personal, la sintaxis debería estar hecha para humanos, no para mÃĄquinasâ€Ķ el uso de # como privado en JS, no es descriptivo, a menos que sepas la especificaciÃģn de JS. Es decir, el cÃģdigo debería ser fÃĄcil de comprender. Todo parte de una filosofía, y necesidades de integraciÃģn tÃĐcnica, entre otrosâ€Ķ

    • @michellefelix1355
      @michellefelix1355 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

      Coincido, me parece mucho mÃĄs descriptivo el uso de private

    • @yerkoacuna5037
      @yerkoacuna5037 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§ +2

      public static void main(String[] args) enjoyers be like..

  • @laresistencia2146
    @laresistencia2146 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§ +1

    -1 al argumento sobre los enums, para mí son la vida 😂

    • @midulive
      @midulive  2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

      Pienso igual!

  • @manuellemus8529
    @manuellemus8529 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

    yo uso enum pero acabo de encontrarme con un problema serio y que me veo obligado a "bajar mi consumo de enums"
    Ejemplo:
    enum EAnimal = {
    GATO = "gato",
    PERRO = "perro",
    TIGRE = "tigre"
    }
    //quiero definir una variable que SOLO acepte un animal domestico
    let domestico :EAnimal = EAnimal .TIGRE; // ⚠NO quiero que me sugiera tigre, es peligroso.
    //Usando tipos:
    type TAnimal = "GATO" | "PERRO" | "TIGRE";
    type TAnimalDomestico = Exclude; //solo domÃĐsticos
    let domestico :TAnimalDomestico = "TIGRE" //ðŸšŦ Error, Tigre NO es domestico;
    Enum es rígido, tipo es flexible y adaptable

  • @gerardoanaya6159
    @gerardoanaya6159 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

    Desconocía que el # se puede utilizar como modificador acceso de forma nativa en JS y tambiÃĐn los problemas de utilizar las expresiones set y get tus videos se me han hecho interesantes, un saludo amigo

  • @codigito
    @codigito āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

    Totalmente de acuerdo que estupide de razÃģn para np usar enum.... no usemos ts y listo claro

  • @CartagoTube
    @CartagoTube āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

    typescript es tu 9/10 solucion >o< pa esas mierdas

  • @elwnbkan6954
    @elwnbkan6954 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

    simplemente javascript es sorprendente, siempre en evolucion en su eterna busqueda de ser un lenguaje decente xD...
    y typescript que ya es algo decente, pero innova para ser cada vez innecesariamente mas "complejo"....

  • @mml1357
    @mml1357 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

    Hola si tengo definido un type, cÃģmo puedo clonar esa estructura hacia una clase? por ejemplo:
    type persona = {
    nombre: string
    edad: number
    }
    y lo que deseo obtener es:
    class persona {
    nombre: string
    edad: number
    }

  • @martinemanuel8239
    @martinemanuel8239 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

    Team underscore -> __atributo sin dudas
    el # es muy feo pobrecito, me recuerda un poco al id en css, creo que podrian implementar algo como C++
    donde pones private: y todo el codigo que quieras debajo de eso serÃĄ privado, igualmente typescript a muerteðŸ‘ŧ

  • @fjmn2001
    @fjmn2001 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

    El # para los private es un "Anti-Pattern" 😂 bromeando.

  • @psicodelico6
    @psicodelico6 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

    Namespace es util cuando se trabaja en equipo y luego hay que unir los mÃģdulos

  • @1iamigo
    @1iamigo 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§ +1

    ÂŋPor quÃĐ mierdas estandarizaron JavaScript con tantas porquerías?

    • @midulive
      @midulive  2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§ +2

      Eso no es JavaScript. Es TypeScript.

    • @1iamigo
      @1iamigo 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§ +1

      @@midulive TypeScript es lo que debiÃģ ser JavaScript desde un principio de los tiempos, pero que por razones egoistas no se diÃģ.
      JavaScript, con su mentira de la flexibilidad, inventÃģ una cantidad de malas prÃĄcticas que nisiquiera se pueden abarcar en un curso dedicado a ello.
      Muchísimas cosas se pudieron hacer y evitar, grandísimas cantidades de dinero se pudieron haber ahorrado y se pudo ahorrar el desarrollo de tantas tecnologías que hoy se venden como novedosas, cual lo Último en iphone de la semana, y que hacen que millones de personas gasten en cursos y tutoriales billones de dÃģlares y demÃĄs dinero en todas las denominaciones del mundo, tiempo y esfuerzo absurdamente desperdiciado, para que al final se aprendan tecnologías sobre del sobre lenguaje que evidentemente son un montÃģn de tapahuecos y parches sobre las embarradas que JavaScript fomenta.

    • @1iamigo
      @1iamigo 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

      @@midulive El tipado fuerte pudo ser considerado como una manera de establecer seguridad y control, para el uso de variables, objetos y funciones, pero debido a que jamÃĄs se dedicÃģ esfuerzo en ello, se han fomentado las malas prÃĄcticas de la programaciÃģn con un lavado de cerebro brutal, ahora simplemente se consideran como herramientas para ayudar al programador a escribir su cÃģdigo.
      Incluso se podría establecer mejores funciones y mÃĐtodos del lado del Kernel para optimizar el rendimiento del cÃģdigo, e incluso, existen tÃĐsis que tratan sobre protocolos de comunicaciÃģn mÃĄs ÃĄgiles que se pueden implementar cuando el cÃģdigo fuente posee buenas prÃĄcticas de programaciÃģn en su fondo.

    • @1iamigo
      @1iamigo 2 āļ›āļĩāļ—āļĩāđˆāđāļĨāđ‰āļ§

      Los militares siempre se llevan las mejores tecnologías. 😒