Aprende TypeScript: desde principiantes hasta técnicas de codificación avanzadas | Zoë Davidson | Skillshare

Velocidad de reproducción


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Aprende TypeScript: desde principiantes hasta técnicas de codificación avanzadas

teacher avatar Zoë Davidson, Software Engineer & Cinematographer

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Lecciones en esta clase

    • 1.

      Introduccion

      1:21

    • 2.

      Proyecto de clase

      0:35

    • 3.

      Introducción de JavaScript

      0:54

    • 4.

      JavaScript y otros lenguajes de programación

      1:44

    • 5.

      ¿Qué es TypeScript?

      0:22

    • 6.

      Tipos

      1:06

    • 7.

      Errores

      0:41

    • 8.

      Cómo instalar TypeScript

      1:24

    • 9.

      TypeScript y React

      17:55

    • 10.

      TypeScript y Next.js (estilo)

      28:19

    • 11.

      TypeScript y Next.js (tipos)

      23:40

    • 12.

      CONCLUSIÓN

      0:53

  • --
  • Nivel principiante
  • Nivel intermedio
  • Nivel avanzado
  • Todos los niveles

Generado por la comunidad

El nivel se determina según la opinión de la mayoría de los estudiantes que han dejado reseñas en esta clase. La recomendación del profesor o de la profesora se muestra hasta que se recopilen al menos 5 reseñas de estudiantes.

192

Estudiantes

1

Proyectos

Acerca de esta clase

Esta clase te enseñará todo lo que necesitas saber para escribir JavaScript, desde conceptos principiantes hasta avanzados:

  • Qué es TypeScript
  • Cómo usar los tipos
  • Cómo construir una calculadora de propinas

Mi nombre es Zoë, soy ingeniera de software y profesora de cine. Puedes revisar mi trabajo aquí.

Esta clase es para cualquier persona que haya tenido interés en aprender a codificar.  Tu proyecto de clase será crear tu propia calculadora de propinas con TypeScript. 

Esta clase incluirá una guía paso a paso sobre cómo aprender TypeScript desde cero.

  • Cómo usar TypeScript con React
  • Lo que hace diferente a un lenguaje de programación
  • Cómo escribir interfaces y tipos

Una vez que hayas tomado el curso, ¡asegúrate de dejar un comentario sobre lo que te ha parecido!

Recursos

Next.js Starter: github.com/zdavidson/muxt-ts-app

Aprende JavaScript: skillshare.com/es/classes/técnicas de codificación para principiantes a avanzados

Equipo de filmación

  1. Canon 5D IV
  2. Canon 24 - 70 f/2.8
  3. Amaran 60x - asequible y potente
  4. Desview T3 Teleprompter
  5. Soporte para escritorio pequeño
  6. Sennheiser MKE 600
  7. Brazo de micrófono nuevo
  8. Zoom H4n Pro

Equipo de desarrollo

  1. M1 Macbook Pro de 13"
  2. Teclado mágico de Apple
  3. Logitech MX en cualquier lugar
  4. Soporte dual para computadora portátil
  5. LG 4k 27"
  6. Silla de escritorio ergonómica - barata
  7. Bose QC 35 II
  8. AirPods Pro
  9. Monitor y stand para espresso (viajes): increíble

Conoce a tu profesor(a)

Teacher Profile Image

Zoë Davidson

Software Engineer & Cinematographer

Profesor(a)

Hey! I'm Zoe, a software engineer, filmmaker, and former professor from Toronto, Canada. I have an MFA in Film from Howard University, and also do work as a software engineer.

In the past, I've worked for the University of the District of Columbia, the Academy of Motion Picture Arts and Sciences, Lionsgate, Huffington Post, and I'm a member of organizations like the Canadian Society of Cinematographers.

The films that I've worked on have been featured at festivals around the world, including Sundance, ABFF, Trinidad Tobago Film Festival, and CaribbeanTales.

Check out my latest work, here: zoeahdavidson.com

Ver perfil completo

Level: All Levels

Valoración de la clase

¿Se cumplieron las expectativas?
    ¡Superadas!
  • 0%
  • 0%
  • Un poco
  • 0%
  • No realmente
  • 0%

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

Ve clases sobre la marcha con la aplicación de Skillshare. Progresa en línea o descarga las clases para verlas en el avión, el metro o donde sea que aprendas mejor.

Transcripciones

1. Introduccion: Puede que hayas oído hablar de él, pero ¿sabes por qué y cómo usar mecanografiado en lugar de Typescript es un superconjunto seguro de tipo de Javascript que permite todas las mismas características y capacidades de Javascript al tiempo que evita que los errores descuidados en su aplicación web Hoy vamos a recorrer todo lo que necesitas saber para aprender y usar el mecanografiado Hola, mi nombre es Zoe. Soy ingeniero de software y ex profesor que le encanta ayudar a otros a comenzar con la codificación. He creado toneladas de sitios web y aplicaciones web usando React CSS, HTML y más. Hoy vamos a repasar Typescript y cómo puedes usarlo para mejorar sustancialmente tu tiempo de desarrollo y experiencia Para ello, estaremos construyendo este proyecto en mecanografiado. Hablaremos de qué tipos son, cómo usarlos y por qué son útiles. Luego nos sumergiremos directamente en nuestro tutorial. El tutorial se dividirá en tres partes. Primero inicializaremos nuestro nuevo proyecto de Typescript. Entonces lo pondremos en marcha en nuestros navegadores. Y finalmente, construiremos nuestro sitio web usando Typescript. Este curso es para cualquiera que esté interesado en aprender mecanografiado, aunque tener una comprensión general de Javascript será esencial si necesitas aprender Javascript, tengo una clase completa sobre ese enlace abajo Sin embargo, si ya estás familiarizado con Javascript y solo necesitas repasarlo, he incluido algunas lecciones aquí para asegurarme de que todos estamos en la misma página. Al final de este curso, deberías poder construir una aplicación web completamente mecanografiada por ti mismo. Empecemos. 2. Proyecto de clase: Proyecto de clase. Nuestro proyecto para esta clase será construir una aplicación web simple usando mecanografiado Para esta clase, será fundamental tener acceso a una computadora en la que puedas ejecutar código de Visual Studio u otro editor de código de tu elección. También querrás tener un navegador como Google Chrome funcionamiento, ya que lo usaremos para mostrar nuestra página web. Por último, tener una comprensión general de Javascript será esencial. Si estás familiarizado con Javascript, solo necesitamos un repaso. No te preocupes, lo he incluido en las próximas lecciones. Dejaré cualquier enlace a cualquier activo y recurso que necesite en la pestaña de proyectos y recursos a continuación. 3. Introducción de JavaScript: Introducción a Javascript. dos lugares donde Javascript se puede escribir en archivos HTML o en su propio archivo Javascript dedicado. Si queremos escribir Javascript en un archivo HTML, es tan sencillo como agregar la etiqueta script a la sección head del documento. Esta etiqueta de script está reservada para cualquier lenguaje de scripting, que son lenguajes con los que puedes ejecutar comandos, y es donde teóricamente podría vivir nuestro Javascript. Todo lo que escribas entre estas etiquetas será compilado e interpretado como Javascript. Si bien esto está bien para aplicaciones realmente pequeñas, esto podría complicarse un poco más una vez que empecemos a construir sitios web cada vez más complejos. En este caso, podemos usar el segundo lugar en el que Javascript se puede escribir en su propio archivo y simplemente utilizar la etiqueta script como referencia. Haremos un archivo Javascript por separado y conectaremos las dos. Y voilá, hemos agregado Javascript a nuestro proyecto. Vamos a sumergirnos en los entresijos de Javascript y los lenguajes de programación en general. 4. JavaScript y otros lenguajes de programación: Javascript y otros lenguajes de programación. Como ya hemos comentado, Javascript es un lenguaje de scripting que te permite introducir lógica y funcionalidad en tus páginas web Pero, ¿cómo hace esto? Como también hemos mencionado, Javascript es un lenguaje de programación. Hay varias cosas que la mayoría, si no todos, los lenguajes de programación tienen en común. Al igual que otros tipos de lenguajes basados en computadoras, los lenguajes de programación están en su forma más simple, solo una forma para que nosotros los humanos hablemos con la computadora. Javascript, en particular, nos permite como programadores, interactuar con el navegador web a través del Dom, o el Document Object Model El Dom es la interfaz de programación para documentos web y actúa como una representación de esa página para que pueda ser interactuada, actualizada y modificada en función de la entrada y la interacción del usuario Javascript, en particular, es el lenguaje que utilizamos para interactuar con el Dom, y el 98% de todos los sitios web utilizan Javascript en el lado del cliente. lenguajes de programación también tienen su propia sintaxis única. Al igual que en otros idiomas como el inglés y el francés, existe una sintaxis que define y explica las formas en que las palabras se unen para formar oraciones, párrafos, etcétera lenguajes de programación de la misma manera, cada uno tiene su propia sintaxis para determinar qué constituye una línea completa de código. Por ejemplo, todos los lenguajes de programación tienen su propio caso y propósito únicos. Es posible que hayas oído hablar de otros lenguajes de programación como Python, Ruby, Java y otros. Dependiendo del tipo de aplicaciones que busquen construir, uno de estos lenguajes de programación podría ser más adecuado para la tarea que otros, ya que el objetivo de este curso es aprender a interactuar y construir aplicaciones para la web. El mejor lenguaje de programación que podemos aprender es Javascript, o en este caso, Typescript. Vamos a sumergirnos en ello. 5. ¿Qué es TypeScript?: ¿Qué es mecanografiado? Typescript es simplemente un superconjunto de Javascript. Eso significa que tiene todas las mismas capacidades de Javascript con algunas características adicionales que benefician al desarrollador. Una de las características principales de Typescript es el uso de tipos, que aseguran que el valor al que se está accediendo sea del tipo correcto Pero retrocedamos. ¿Qué son los tipos? 6. Tipos: Tipos. Hay muchos tipos diferentes accesibles en mecanografiado Así que comencemos hablando los más comunes con los que probablemente te encuentres en tu trabajo diario. Algunos de estos tipos comunes con los que puede que ya esté familiarizado desde Javascript, como el número de cadena y el booleano Una cadena es cualquier valor que se puede poner y leer entre comillas. Un número es un valor numérico regular como 1234, etcétera, y un booleano puede ser uno de dos valores, verdadero También hay matrices que al igual que en Javascript, son listas ordenadas que pueden contener múltiples tipos de datos. Sin embargo, el script tipo tiene un tipo especial llamado any. Cualquiera es un tipo que se puede usar cuando no quieres escribir verificar un valor en particular o no estás muy seguro de qué tipo usar todavía. En el segundo caso, también podrías usar Desconocido, pero a cualquiera le irá bien por ahora. 7. Errores: Errores que podrías encontrar. A medida que empieces a usar Typescript, empezarás a ver muchos más errores al Pero esto es algo bueno porque te ayudará a aprenderlo mucho más rápido. No solo el script de tipo arroja errores para tipos no coincidentes, sino que arrojará errores para una variedad de escenarios que desea evitar Al igual que cuando llamas a una función, pero olvidas proporcionar todos los argumentos requeridos en Javascript, un error como este se consideraría error uncuht que pasa Sin embargo, esto es algo que no quieres porque si esos argumentos adicionales en esa función son esenciales, tu función probablemente no funcionará como esperabas. Pero eso es suficiente guión de tipo teórico, vamos a sumergirnos en escribirlo por nosotros mismos. 8. Cómo instalar TypeScript: Muy bien, así que para empezar con el tipo script, podemos hacerlo de dos maneras. Podemos instalar el compilador mecanografiado y trabajar solo en un archivo typescript simple, o podemos incorporarlo a nuestro set de aplicaciones create Voy a ir por la ruta de la escalera, pero te voy a mostrar cómo instalarla rápidamente en tu computadora globalmente si quieres. Entonces, si quieres instalar un mecanografiado globalmente, es bastante fácil Solo necesitas instalar el compilador. Mecanografiado, como mencionaste, es un superconjunto Pero el navegador en realidad no lee la escritura mecanografiada, solo lee Javascript La forma en que podemos usar Typescript en el navegador es a través de él siendo compilado de nuevo a Javascript Recordarás este proceso de compilar de un idioma a otro, de CSS y CSS Scss se compiló hasta CSS. Lo mismo es cierto para Typescript y Javascript. Si querías usar Typescript globalmente en tu computadora, todo lo que tienes que hacer es instalarlo Instale el compilador Typescript. Entonces vas NPM I, y es para lo global Y luego escribirías Mecanografiado. Y luego una vez que hiciste eso, habrías instalado el compilador mecanografiado globalmente y debería funcionar en Después de hacer eso, solo revisaste para ver si lo habías hecho correctamente. Tscv y yo ya hicimos esto, así que viene con la versión 4.2 0.8 Y así después de haber instalado Typescript globalmente, ahora podemos seguir adelante y crear un proyecto react 9. TypeScript y React: Lo que voy a hacer es copiar una línea de código que tengo aquí que básicamente va decir que voy a crear una app de reacción y la vamos a llamar aprender tipo script. Se va a utilizar esta bandera muy especial aquí llamada plantilla. Podríamos haberlo visto una o dos veces antes. La plantilla, esta vez en lugar de roja va a ser mecanografiada, así que nos va a dar una plantilla de script de tipo para que no tengamos que preocuparnos tratar de averiguar cómo configurar la aplicación correctamente usando Simplemente ejecutaremos eso y una vez que esté listo, empezaremos. Bien, así que tenemos nuestra carpeta de script tipo aprendida lista y lista para funcionar. Entonces vamos a seguir adelante y NPM iniciarlo y echar un vistazo a lo que tenemos en el navegador Entonces, como puedes ver aquí, es más o menos la misma aplicación excepto por una diferencia clave. Dijo editar la aplicación fuente TSX en lugar de JSX para guardar y recargar. Más o menos eso. Esa es la única diferencia que tenemos aquí con nuestro script tipo. Entonces lo que vamos a hacer ahora es que vamos a entrar en nuestra carpeta pública. Decimos que todo es igual. Entremos en nuestra carpeta de fuentes y veamos qué está pasando aquí. Como puede ver, tenemos un par de archivos diferentes dentro de estas dos carpetas. Dentro de nuestro directorio más grande y dentro la aplicación y dentro de nuestra carpeta de fuentes. Echemos un vistazo a este archivo de configuración TS. Entonces este es un nuevo archivo que no tuvimos la última vez. Este archivo básicamente le dice al compilador de script tipo cómo queremos que compile el código Por lo que hay diferentes versiones de Javascript que actualmente están disponibles en la web. Ahora, cuando estamos compilando script de tipo para Javascript, queremos compilarlo básicamente a la versión más antigua que sigue siendo perfectamente utilizable Porque queremos asegurarnos de que sea lo más compatible posible con tantas máquinas como sea posible. Si solo lo compilamos a la última versión de Javascript, algunas máquinas más antiguas podrían no tener acceso a gran parte de la funcionalidad que implementa. Y entonces haríamos que nuestros sitios web fueran más inaccesibles. Así que en este caso lo hemos compilado hasta ES five, que es una versión un poco más antigua del script Java. Creo que Ron siete u ocho a estas alturas. Y luego hay un par de opciones más que notarás. Todo esto está en el objeto Jon Json también. Dice que te permitirá poner Javascript porque todos los archivos Javascript son archivo mecanografiado válido Así que en realidad puedes escribir Javascript en un proyecto mecanografiado puede que no tenga mucho sentido, pero puedes hacerlo si quieres ¿Y entonces es estricto? Por lo que va a hacer cumplir una estricta comprobación de tipos. Puede que o cuando esté aprendiendo, es posible que desee dejar esto encendido. Pero puede o no crear algunas reglas difíciles más adelante en tu proyecto. Depende de lo que funcione para ti y luego de algunos otros valores que acaban de poner para nosotros automáticamente. Como trabajamos con escritura tipo. Cada vez más veremos cuándo y cuándo no necesitamos interactuar con estos archivos. Pero por ahora lo dejaremos como está. A continuación vamos a entrar en nuestro archivo TSX y nuestro archivo TSX índice y ver qué tienen esos ahí El archivo índice TSS, archivo TSX se ve más o menos igual No hay nada realmente diferente ahí. Cuando entramos en nuestro archivo TSX, más o menos es lo mismo, para ser honestos Y como ya puedes ver, Typescript y Javascript son más o menos lo mismo No hay mucho que sea muy diferente, pero hay algunas piezas clave que marcarán alguna diferencia. Sigamos adelante y creamos un poco de una app para trabajar con esas. Así que he seguido adelante y creé un componente llamado Contador, igual que nuestro contador anterior. Este contador podría hacer cosas como contar hacia arriba por uno o contar atrás. En este momento no hace nada, es solo un componente vacío. Pero sigamos adelante y tratemos de pasarle algunos accesorios para que podamos agregarle alguna funcionalidad Entonces, lo que vamos a hacer dentro de nuestra app, vamos a crear un par de variables aquí. Digamos título y le daremos el título, un valor de mi contador. Entonces este podría ser el título para nuestro mostrador. Diremos const button text y podríamos decir que esto podría ser más uno Entonces solo le daremos algunas variables básicas básicas. Todo esto es solo para mostrar cómo funciona el script de tipo. Veremos que eso nos está dando un poco de subrayados amarillos lo que ha hecho desde antes Debido a que las variables han sido declaradas pero no son rojas, aún no se utilizan. No te preocupes, ya llegaremos a eso. Lo que vamos a hacer ahora es pasar estos para contrarrestar. Digamos título es igual a título y botón. Es igual al texto del botón. Genial, seguimos recibiendo ese error porque, pero ahora en realidad es un error de tipo. Entonces dice tipo título tipo de cadena y botón tipo de texto de cadena no es asignable para escribir atributo intrínseco El título de propiedad no existe en los atributos intrínsecos. Entonces, ¿qué significa eso? Entonces básicamente, mecanografiado permite esta cosa muy especial llamada Y mecanografiar nos permite asegurarnos de que los valores que pasamos son de cierto tipo, ¿verdad? Estamos, ya sabes, en un título donde queremos que sea texto, queremos que sea una cadena. No estamos pasando un objeto, por ejemplo, solo estamos pasando una cadena. Entonces, escriba script nos permite verificar esto antes llegar a la etapa de compilación y darnos cuenta de que nuestra aplicación simplemente está rota sin motivo alguno Entonces, si vamos a nuestro contador, en realidad podemos traer estas variables como lo hemos hecho antes del título y el texto del botón y podemos guardar eso. Pero aquí estamos recibiendo algunos errores. Así que estamos consiguiendo que todos los elementos destructuredr no se utilicen. El título del elemento vinculante tiene implícitamente cualquier tipo. Bien, entonces estamos recibiendo dos errores. Estamos recibiendo un error porque aún no los hemos usado. Bien. Pero también estamos recibiendo el segundo error que no habíamos visto antes. El título del elemento vinculante tiene implícitamente cualquier tipo. Ahora los tipos y el mecanografiado son igual que los diferentes tipos de datos de los que hemos hablado antes Tenemos cadena objeto de número booleano, pero hay esta cosa en tipo script llamado an y en realidad no es un buen Cualquiera está diciendo literalmente como esto podría ser de cualquier tipo y derrota el propósito de usar script de tipo Si alguna vez intentas escribir algo con el tipo de cualquiera, en realidad te dará un error. Entonces hay un par de formas en las que podemos sortear este error. Bien, la forma en que vamos a sortear estos errores primero, sigamos adelante e implementarlos en nuestro proyecto. Entonces pongamos una H uno y le daremos un título. Le daremos la propiedad de cualquier título que sea. Lo guardaremos y luego crearemos un botón. Le daremos la propiedad de cualquier texto de botón que sea . Fresco. Vamos a seguir adelante y ahorrar eso. Ahora al menos nos hemos deshecho de ese primer error, pero aún tenemos el error de tipo Eddy. Lo que tenemos que hacer en el tipo de script es en realidad crear algo llamado interfaz. Una interfaz es básicamente solo un conjunto de reglas que le dice al componente qué hacer con las variables que se han pasado, qué hacer con las propiedades que se han pasado a través de ella. La forma en que creas una interfaz es que sales de tu componente justo encima de él tal vez donde importarías algo justo entre esos dos espacios. Sigues adelante y dices interfaz, y luego solo le das un nombre. Normalmente la gente solo lo llama accesorios, pero podrías llamarlo como quieras Podrías llamarlo accesorios de contador o accesorios de aplicaciones para que sean específicos de tu componente Pero puedes llamarlo como quieras porque solo tenemos un componente que está tomando accesorios Sólo lo llamaremos accesorios, pero sí tiene que ser capital. Sea cual sea el nombre que elija, asegúrese de que la primera letra sea Interfaces mayúscula y que sea un objeto. Así que simplemente crearemos nuestro objeto ahí. No es igual a eso, solo usa las llaves rizadas. Entonces lo que queremos hacer es por cada prop que tenemos que se está enviando a contrarrestar, queremos decirle a la interfaz cuál debe ser ese tipo. Si escribo título aquí, puedo usar dos puntos para luego asignarle un tipo. Entonces voy a decir title es de tipo string y guárdalo. Y tenemos uno hecho. El siguiente es el texto de botón, que también es de tipo string. Y pondremos cuerda aquí y luego la guardaremos y funcionaremos bien. Ahora estamos recibiendo este otro error aquí y todavía estamos recibiendo estos errores aquí. Eso es porque estos dos aún no han sido conectados. Existen en el mismo expediente. Pero el componente, el componente necesita que se le diga que realmente use ese utilería La forma en que haces esto con SX es que en realidad solo pones un poco de dos puntos aquí, justo al lado de esos corchetes squiggly, y escribes el nombre de cualquiera que sea tu interfaz Así que en nuestro caso, utilería y ahorra. Y una vez que hagas eso, verás que todos nuestros errores se han ido. Y ahora hemos inicializado nuestros valores con algún tipo de algún tipo de tipo Ahora si realmente lo estuviéramos, y si revisas tu página, tendremos mi contador con un número, ¿verdad? Bastante simple. También hay diferentes tipos disponibles. Digamos que quieres pasar una función, ¿verdad? Entonces digamos que vamos a crear una función onclick en click es igual a M consola dot log clicked, Así que solo quieres crear una función onclick realmente simple Y eso lo pasamos así como un utilero. Como es habitual, notaremos que se vuelve amarillo porque es una función. Y tenemos que agregarlo a nuestros apoyos aquí al click. Vamos a agregarlo al click de nuestro botón. Di eso. Pero el problema es, uno, aquí no es amarillo porque no sabe de qué tipo es, ¿verdad? Porque aquí no lo hemos puesto en nuestros accesorios reales. Así que sigamos adelante y de hecho lo pongamos en nuestros accesorios. Entonces diremos al hacer clic. Pero lo diferente aquí es que es una función. Y si recuerdas tu Javascript, una función no es como un tipo en script Java, ¿verdad? Es como una cosa que usamos, ¿verdad? Quiero decir, las funciones supongo que son objetos pero como no lo querrías solo son de una clase diferente, son de un tipo diferente. Entonces en el tipo script, realidad tienen algo para funciones donde dirías si devuelve algo o no. Entonces, la sintaxis para esto es en realidad solo tus paréntesis regulares Entonces escribirías la flecha y luego escribirías void si no devuelve nada. Si devuelve algo, tal vez podrías decir cadena o lo que sea que devuelva. Y si se necesitan argumentos, podrías pasarlos aquí, como si se necesitara arte uno de tipo cadena si eso fuera cierto. Esto no es cierto para nuestra función aquí. Pero en su mayor parte, la mayoría de las funciones van a estar transmitiendo solo nuestro simple argumento, menos funciones que van a anular y la razón por la que van a anular es porque en realidad no devuelven nada, ¿verdad? Si una función devuelve algo, entonces eso sería datos significativos para almacenar en una variable u otra cosa. Pero en su mayor parte, cuando estás transmitiendo una función, solo va a desencadenar algo dentro de la otra aplicación. Entonces, si tuviéramos, por ejemplo, si tomamos botón e hicimos nuestro propio componente de botón como lo teníamos antes con el anuncio en el botón restar, podríamos simplemente pasar el clic como un vacío y dejar toda la lógica en la función de contador. Esa es una opción que podríamos tener. Entonces ahora que hemos puesto los paréntesis vacíos igual que una función de flecha, ya sabes, paréntesis, y luego no va a devolver Lo hemos agregado aquí a nuestros accesorios y lo hemos agregado a nuestra función Cuando vayamos y hagamos clic más uno, lo notaremos en nuestro real, y déjame borrar esto y si vamos y registramos nuestra consola real aquí, notaremos que dice click. Y cada vez que hacemos clic en él, solo agrega uno a la pila para que sepamos que está funcionando correctamente. Escriba script. Hace falta un poco acostumbrarse, pero una vez que estás acostumbrado, es mucho más fácil trabajar con él. Personalmente, una de las cosas más desafiantes para trabajar cuando estás trabajando con script tipo es cuando tienes objetos más grandes, ¿verdad? Entonces digamos que teníamos un objeto de tal vez tenemos un objeto llamado house otra vez, ¿verdad? Y esto es un objeto, este es un objeto que tiene un valor de nombre de mi casa. Y entonces tal vez tenga habitaciones, que es un número. Y entonces tal vez tenga electrodomésticos, que es una variedad de Sí, y tiene electrodoméstico. Así que vamos incluso a eso y digamos que pasamos casa a nuestra función de contador. Probablemente deberíamos cambiar el nombre de este componente, pero digamos que pasamos casa a nuestro mostrador. Hay un par de formas en las que podríamos manejar esto. Si importamos casa, solo vamos a registrarla en consola por ahora. Para deshacernos de ese primer error, queremos agregarlo a nuestros accesorios Entonces agregaremos casa a nuestros apoyos. Pero, ¿qué tipo le damos, verdad? Podríamos darle, supongo al tipo de objeto, pero en teoría, como cuando se piensa en ello, todo en Javascript es un objeto. Entonces darle el tipo de objeto podría no ser la mejor idea. Quiero decir, funciona. Pero podría no ser la mejor manera de verificar si está funcionando correctamente, ¿verdad? Como, quiero decir, la consola la registramos. Está bien, funciona. Pero en, y en un mundo ideal, en realidad tendríamos una tipificación un poco más específica, una escritura un poco más estricta para que sepamos si hemos conseguido o no la forma correcta de nuestro objeto. Ya sabes, casa con el nombre y los electrodomésticos y las habitaciones. Ya sabes, queremos asegurarnos de que ese es en realidad el objeto correcto. Entonces, una forma de hacer esto es comenzar en la aplicación, puedes crear un tipo para casa, así que diremos interfaz y también puedes tener múltiples interfaces. No necesitas solo tener uno, sino que puedes decir Interface House. Entonces básicamente puedes usar la forma de esta casa para crear ese tipo. Se puede decir que el nombre va a ser una cadena, las habitaciones van a ser un número, los electrodomésticos van a ser o una matriz de cadenas. La forma en que escribirías esto es que escribes una cadena y luego pondrás el símbolo de matriz junto a él. Nos está diciendo que en realidad es una matriz de esas cadenas. Si fuera una matriz de números, podrías, en realidad podrías simplemente escribir array y number, pero en nuestro caso van a ser cadenas. Entonces, lo que vas a querer hacer, vas a asegurarte de exportar esta casa de interfaz de exportación y luego quieres importar la interfaz al contador. Así que recuerda como dije puedes nombrar las interfaces, cualquier cosa que sepas. Solo asegúrate de que sea como relevante para lo que es la cosa. Y también podrías mecanografiar casa. Puedes poner tus dos puntos aquí y luego darle a casa el tipo de casa para que así el compilador sepa por ambos lados como, bien, esta casa coincide con esta casa Ambos son del mismo tipo. Entonces, si pasamos a nuestro mostrador, podemos pasar a la parte superior de nuestro archivo donde deberían vivir todos nuestros estados de cuenta de importación y deberíamos alojar desde la aplicación dot slash Y luego iremos a nuestra casa objeto aquí. Y luego solo dale pases el tipo de casa. Y ahora en realidad no cambia nada en nuestra app, pero ahora sabemos que se escribe con más precisión, ¿verdad Ahora sabemos que seguro estas dos cosas coinciden seguro saber que la casa es de tipo casa y la otra es de tipo casa también. Y así si en realidad teníamos el tipo de interfaz equivocado, bien, digamos que he creado otra interfaz aquí y la llamé casa y tenía nombre y era solo un número y eso era todo. E intenté pasarle eso a este tipo de casa. Debería llamar a un error. Y verás en nuestros Abs ya se puso roja. Entonces verás aquí que nos dirá que tipo casa no es asignable al tipo home porque las propiedades de nombre son incompatibles Cadena que no se puede asignar al número de tipo. Aquí es donde el script tipo muestra su fuerza real. Podríamos tener dos tipos muy similares como casa y hogar. Que son casi lo mismo y ambos tienen el nombre propiedad. Pero sin embargo, el nombre de propiedad en sí no es del mismo tipo. Sé que este tipo de cosas puede ser un poco complicado y un poco confuso, pero a medida que trabajes un poco más en la escritura mecanografiada, se volverá mucho más claro cuanto a qué tiene sentido y qué no Pero por ahora, puedes ver que, ya sabes, básicamente, siempre y cuando escribas las cosas de la misma manera, mecanografiado hará la comprobación por ti y se asegurará de que no cometas ningún error descuidado Personalmente, encuentro el mecanografiado realmente esencial. Prefiero escribir con él cuando estoy creando aplicaciones. Sólo porque hace todo eso. Comprobando mis pequeños errores tontos antes de llegar a la etapa de producción real y luego no puedo entender qué tiene de malo la aplicación. Así que eso fue solo una introducción rápida al mecanografiado, y seguiremos adelante y trabajaremos con él un poco más un poco más tarde Si alguna vez tienes alguna duda sobre qué cosas puedes y qué no puedes hacer con el mecanografiado, te dejaré un enlace al sitio web que tiene la documentación del mecanografiado para que puedas acceder a toda la información que puedas necesitar o buscar toda la información que puedas necesitar si no estás seguro cómo escribir algo 10. TypeScript y Next.js (estilo): Bien, así que sigamos adelante y comencemos a construir nuestra aplicación de script tipo. Si echas un vistazo al archivo de diseño aquí, esto es lo que vamos a construir. Se trata de una sencilla aplicación de calculadora de propinas que involucra algunos tipos diferentes con los que podemos trabajar y ver que nuestro proyecto está funcionando correctamente y aprender tipos script. Entonces, vamos a sumergirnos en ello. primero es lo primero, voy a seguir adelante y comenzar en mi repositorio aquí. Ahora ya he usado esta app de inicio aquí. Está en mi Github, se llama aplicación Muck. Lo que hace es combinar algunas cosas rápidas para ponerse en marcha más rápido usando material Y siguiente S, y escribir script. La mayoría de estos solo están relacionados con el estilo y la activación de una aplicación rápida. Así que siéntete libre de usarlo si lo deseas. Pero no tienes, solo puedes iniciar una aplicación regular usando react y type script. Entonces tenemos tres o cuatro secciones aquí. Tenemos el monto de la factura, el porcentaje de propina, el número de personas, y luego al monto de propina por persona. Esta es la pieza calculada y la pieza de reinicio. Bien, así que bastante sencillo. Lo que voy a hacer, estoy asumiendo que con esta app querrás poder ingresar el monto de la factura. Así que querrás usar algún tipo de entrada. Luego una vez que ingreses eso, entonces querrás agregar, poner la cantidad de propina a ese número y luego agregar el número de personas como todo el lado izquierdo son tus entradas y luego el lado derecho es tu salida, esencialmente resultados de todo eso. Para hacer eso, creo que lo que voy a hacer es crear una entrada de propina y una salida de propina. A lo mejor voy a crear un nuevo archivo para decir, digamos Bill o Cost input. Y voy a poner eso aquí y luego volveremos a decir A. Puedes ponerles el nombre que quieras. Apenas lo primero que me vino a la mente. Salida. Muy bien, increíble. Entonces tienes la entrada y la salida. Ahora cosa en la que pensar, especialmente cuando estás trabajando con script tipo reactor o cualquier tipo de tecnología como esta, quieres pensar en dónde está viviendo el estado inicial de tu aplicación. ¿Está en cada componente, y entonces tenemos algún gerente estatal global más grande? ¿Vive en un componente superior? ¿Cuál es la forma en que fluyen tus datos? Esencialmente, para esto, creo que es una aplicación bastante sencilla, así que no me gustaría usar una más compleja, estoy pensando como situación de datos rojos. Creo que lo que quiero hacer es intentar y simplemente sostenerlo dentro del estado local. Tal vez ponlo en el stand de Z, pero veamos cuánto podemos hacer sin realmente empujarlo demasiado. Bien, primero lo primero, terminemos de construir esto. Queremos propina de facturas, porcentaje y número de personas en nuestro insumo de costos. Vamos a tener algunos elementos diferentes agregaremos en nuestra caja. Vamos a decir un poco es tipografía para decir factura S T número por ciento Oh, increíble. Bien, genial. Y luego vamos a tener algún tipo de entrada de texto. Oh, solo dame el mismo error aquí, porque necesito hacer entrada directa. Importaciones directas, debo decir n insumos. Bien, vamos a importar caja y vamos a importar timpografía. Muy bien, increíble. entrada tiene un componente de campo de texto, eso es lo que es. Así que sólo vamos a pedir prestado esto. Vamos a tomar prestado el componente de campo de texto básico de esquema componente de campo de texto básico para nuestra factura y para nuestro número de personas Yo sólo voy a seguir adelante e importar eso ahí. Genial, increíble. Entonces para estos ahora va a ser más como una selección basada en un botón con una entrada al final. Es un poco más complejo en ese sentido, lo que en realidad voy a hacer es envolverlos en cajas solo para que no mezclemos cuál es cuál. Bien, así que esto es para la factura. Esta caja va a ser el porcentaje de propina. Voy a añadir un poco más en esta caja. Agrega los botones, y luego esta casilla va a ser para el número de personas. Impresionante. Sólo para estructurar realmente las cosas un poco más claramente porque creo que se va a poner un poco inmanejable . Bien, genial. Entonces tenemos eso ahora la cosa con estos insumos, ¿no? Al igual que podríamos tenerlo para que el valor, sea cual sea el tipo de usuario en el valor. Y también debería cambiar el color aquí para que podamos ver realmente el color. Bien, genial. Entonces sí, podría simplemente configurarlo para que el, para que cuando ponga la cantidad en el ingreso de costos, simplemente viva dentro de este componente. Pero porque necesitamos acceder a la cantidad 142 para que podamos obtener el monto de propina en el total por persona. En cuanto a la forma en que estoy pensando sobre el estado, creo que quiero elevar el estado, o levantar el estado y tenerlo vivo en la calculadora de propinas sí. Entonces, ¿qué aspecto tiene eso? Bueno, para mi parece crear unos cuantos elementos, cuantos elementos de estado. Terminaríamos creando un precio total a cero y luego pasándolo a través de nuestras aplicaciones. Eso lo haremos en sólo un segundo. Terminemos con el estilo. Entonces vamos a darle este color de fondo. Colores de fondo, ¿de acuerdo? Y como dije, siéntete libre de usar el estilo que quieras. Esto, depende totalmente de ti. Solo estoy usando a Maly, ¿verdad? Porque es un poco más rápido para mí. Bien. Y entonces oh, ya sabes, ese es el otro tema, necesito hacer de esta una caja flexible. ¿Todo bien? Impresionante. Bien, entonces entonces ahora dentro de estos, sigamos adelante y terminemos esta línea del cielo será ¿cuál es el ancho en ese 379? Yo no agrego eso. El inferior también. Estos dos van a tener estilos de espejado. Me pregunto si hubo como alguno tal vez comentar eso. Ahí vamos. Me preguntaba por qué eso no estaba tomando efecto el estilo global. Hay como un reset global que puse aquí, lo cual es útil pero estaba anulando mi margen y Paddy, lo saqué Bien, así que ahí vamos. Bien, entonces tiene una etiqueta aquí y va a decir gente, entonces esta, va a ser, la etiqueta de factura va a ser solo $1 firmar estas dos identificaciones porque no nos son útiles en este momento. Puedes cambiarlos cuando sí se vuelvan útiles entonces también voy a establecer color para que sea este color para ambos, que podamos ver el texto dentro. Voy a arreglar la taza en un segundo. Nuestra siguiente pieza aquí toma en cuenta eso. Bien, así que agreguemos estos cinco botones y una entrada. Una va a ser una de estas entradas sin el ancho. Entonces voy a hacer algo rápido. Voy a decir propina de costos por porcentajes, y voy a establecer que sea una matriz de números. Voy a decir 5% supongo. 5% 10% 50% 20% y 25. Es 25% Oh no, perdón. 50% 25% Y 50% 25% y 50% Todo bien. Fresco. Entonces esos son los porcentajes de propina. Ahora en el fondo aquí, sólo voy a mapear sobre esos. Voy a decir propina porcentajes Mapa cada por ciento. Entonces quiero seguir adelante y devolver un botón con el porcentaje por ciento como, como el botón y también podría darse aquí. Déjame deshacerme de eso. No puedo decir que deba devolverlo, pero altos Key, llave vendida es el porcentaje, porque esos van a ser únicos. Bien, genial. Entonces ahora tenemos nuestros botones. Impresionante. Cambiemos el color de fondo para que sea así así genial. Y entonces vamos a establecer el ancho de cada uno para que sea 117, creo. 48. Perfecto. Impresionante. Entonces esto, ya sabes qué, tengo una columna flex. Yo sí quiero que sea columna flex, pero creo que quiero envolver estos en la caja. Estoy envolviendo los botones en el campo de texto en una caja. Ahí vamos. Y entonces voy a decir display flex wrap va a ser, entonces voy a decir ancho. Digamos. ¿El 353? Sí, tres seguidos. Entonces digamos que el ancho es de 450. Impresionante. Sólo voy a copiar estos estilos a este texto sentir y guardar eso y tal vez añadir un poco de margen. Nos vemos bastante bien en eso aquí. Impresionante. Eso me parece bastante bien. Creo que estoy bastante contento con eso en términos de solo el estilo general. Lo que voy a hacer ahora con estas cajas, voy a agregar algo de margen a la parte superior e inferior para cada una de estas como cajas exteriores, ahí tenemos un buen espaciado. También me vendría bien una caja flexible, que en realidad probablemente sería mejor. Hagamos de esta caja exterior una caja flexible. Diré espacio. Ahora hay espacio uniformemente de arriba a abajo. Bien, genial. Eso se ve bastante bien. Ahora veamos, ¿ qué más tenemos que hacer? Oh si, tenemos que hacer el otro lado. Pensemos un poco en la salida de la factura aquí. Salida de factura, tenemos esta caja verde oscuro. Empecemos por eso. Vamos a agarrar este color todavía de nuevo. Digamos antes. Y luego le daremos un ancho, 413 por 41714. Apenas 413 por 413, pero en realidad no importa. 417, Di que Co O necesito necesito agregar a la calculadora de propinas. No está aquí. Esto es para subir aquí. Margen cero O para la calculadora de propinas en sí, necesito alinear los ítems al centro, ¿de acuerdo? Perfecto. Fresco, genial, genial. Se ve bien. Bien, así que lo siguiente que quiero hacer ahora, quiero seguir adelante y agregar en estas piezas que queremos, darles propina y total y un botón de reinicio. Vamos a crear un par de elementos tipográficos. Diremos que solo arregla ese error en la parte superior aquí. Diré cantidad de propina cantidad por persona, y entonces esa va a ser una cantidad. Vamos a arreglar esto en 2 segundos. Puede envolverlo en una caja. Y luego lo vamos a volver a hacer, pero vamos a decir total por persona. Entonces en la parte inferior aquí, vamos a tener un botón que dice reinicios Mismo botón. Bien, botón de reinicio, ya lo lograremos. Esto llegó. ¿Bien? Bien, increíble. Así que aplica estas cosas en la siguiente caja también. Fresco. Perfecto. Entonces vamos a envolver a estos dos en una caja. Y la razón de eso, esos dos en una caja, es que cuando digo justifican el espacio de contenido entre los botones en la parte inferior y los montos de precio están en la parte superior. Impresionante Por cool. Ahí vamos. Bastante básico. Sólo voy a retocar algunos estilos más y luego seguiremos adelante y trabajaremos con nuestro guión ty. Bien, ya sabes, creo que necesito apuntar. Sólo estoy tratando de apuntar el color aquí para que podamos verlo. Creo que tengo que apuntar. Déjame base de entrada. Puede tirar, sí. Bien, perfecto. Eso es lo que quiero hacer. Bien, así que voy a agarrar, en realidad sacar ese color. Saca ese color, puedes sacar ese color, no estás haciendo nada. Y solo toma esta gráfica ahí. Bien, genial. Entonces solo tecleamos las cosas aquí, ahora las podemos ver. Cualquier otro pequeño ajuste. Este lado se ve bastante bien. Ahora creo que el lado derecho aquí, tal vez podríamos simplemente cambiar este color, la cantidad de punta color a blanco y darle un poco más de espaciado. Y entonces deberíamos ser buenos para seguir adelante y pasar nuestro espacio de escritura tipo espacio entre. 11. TypeScript y Next.js (tipos): Bien, así que ahora que tenemos todo esto construido, sigamos adelante y construyamos en la funcionalidad de script tipo, el propósito de esta lección y veamos como es un poco diferente de usar Javascript o JSX regulares. Tenemos nuestro estilo todo bastante hecho. Pero una cosa para observar y notar de la que hablé antes con el estado. Queremos pensar en dónde vive el estado dentro esta aplicación porque tenemos tres o cuatro piezas distintas. Aquí tenemos la sección de entrada, donde el usuario podría seleccionar la propina y poner el número de personas o poner el monto total de la factura. Entonces tenemos la salida, que nos dará el monto de propina y el costo total por persona, monto de propina por persona, costo por persona. Entonces tenemos un botón de reinicio aquí. Ahora para que todo esto funcione, el estado necesita ser algo, bueno, no del todo globalizado necesariamente, sino disponible a un nivel superior para ser pasado entre estos dos componentes Voy a intentar hacer esto usando solo el estado de reacción regular. Si esa no parece ser una solución adecuada, haremos la transición a algo así como stand. Lo que estoy tratando de hacer es evitar uso de reduct porque hay tanto carácter reiterativo involucrado y es una aplicación bastante sencilla Veamos si podemos hacerlo solo usando algunas soluciones simples. En mi mente, necesito pasar la factura total, el porcentaje de propina, y el número de personas del lado izquierdo al lado derecho. Creo que necesita vivir en el componente superior de la calculadora de propinas aquí. Sigamos adelante y hagamos que eso suceda en calculadora de propinas aquí. Lo que voy a hacer es que voy a empezar definiendo algunas variables. Voy a decir, digamos factura total. Voy a decir set total bill iguala estado, que va a importar desde react. Vamos a inicializarlo a cero. Ahora una cosa con type script aquí, en realidad podemos seguir adelante y agregar un tipo y especificar que este tiene que ser un tipo de número. Ahora porque también pones cero, infiere que necesita ser un tipo de número Estamos recibiendo un error aquí porque no hemos usado cliente aquí porque ese es solo el siguiente error GS. No tiene que ver con el tipo de script, pero podemos especificar el tipo que esta factura necesita para ser de un tipo de número. La cantidad tiene que ser un número para que podamos hacer cálculos sobre. Ese es uno de los puntos en los que empezamos a usar mecanografiado Y ya verás como esto se escurre hasta nuestro, así que tenemos la factura Hagamos lo mismo para fijemos porcentaje de propina, porcentaje porcentual. Eso también va a ser un número. Sí, va a ser un número y luego número de personas. Haremos una más. Diré número de personas, número fijo de personas. Y otra vez, se indica y número va a inicializarlo a cero solo así empezamos con un resbalón limpio Bien, así que ahora que hemos inicializado estas variables, adelante y utilicémoslas en nuestra app para mi entrada de costos Ahora quiero pasar estos parámetros de factura total y establecer para facturar, porcentaje total, establecer porcentaje total número de personas, establecer número de personas al ingreso de costos. Porque esto va a tener implicaciones en cuanto a lo que sucede. Ahora en realidad hay dos formas en las que podemos hacer esto. Podríamos pasar ambos hacia abajo o podríamos definir las funciones en calculadora. Permítanme comenzar con sólo pasar la variable inicial. Digamos factura total. Factura total, propina por porcentaje, porcentaje es igual propina por porcentaje y número de personas es igual al número de personas. Verás, ya estoy recibiendo un error aquí porque el tipo script nos está diciendo que en realidad no tenemos la propiedad en el propio componente. Entonces este es uno de los beneficios del tipo script. No puedes simplemente pasar cosas aleatorias y esperar que funcione. Es necesario utilizar realmente el script de tipo. que especificar, debería decir, qué tipos está esperando. Si me pasa a costar entrada aquí e importo la factura total, voy a tomar en porcentaje de propina y también tomar en número de personas. Nuevamente, si esta es una aplicación regular de reacción, podrías simplemente traerlas así. Pero como no es una reacción regular, no es solo una aplicación Javascript, debería decir, React. Verás que en realidad está recibiendo un error aquí. Diremos elemento vinculante número de personas, por ejemplo, implícitamente tiene cualquier tipo Y como recuerdas antes, hablamos de cualquiera, no necesariamente queremos tener solo un tipo genérico. Lo que queremos hacer es seguir adelante y específicamente escribir estas variables. Déjame mostrarte cómo vamos a hacer eso. La forma en que vamos a hacer esto es crear algo llamado interfaz. Una interfaz es básicamente una forma para escribir script, para nosotros decirle script de tipo. Oye, estoy esperando que estas variables vengan en estas propiedades y quiero que sean de ciertos tipos y estos son los tipos que estoy esperando. Cualquier otra cosa que no sea eso, por favor declare un error. Voy a crearlo, voy a llamarlo props. Puedes llamarlo como quieras. Y voy a delinear estas distintas propiedades. Voy a decir factura total. Va a ser un número. Voy a decir porcentaje de propina. Va a ser un número como un número de personas. Va a ser, entonces voy a decirle a tipo script que todos estos pueden usar este mapa, esta interfaz para obtener el tipo de cultivos. Y ya verás aquí ya no tengo ahí, las cosas están funcionando hasta el momento. Lo último que tenemos que hacer ahora es conectar esto a las ubicaciones reales en nuestra aplicación. En para la propiedad Textfield, creo que hay un valor que podemos usar Creo que se llama valor. Déjame revisar. Vamos a la API. Estoy bastante seguro de que es como una entrada regular, pero quiero asegurarme para que no consigamos algunos errores erróneos Muy bien, sí, creo que solo ponemos en valor. Vamos a probar ese proyecto de ley. Vamos a decir que el valor es igual a la factura total. Nosotros diremos que echa un vistazo aquí. Impresionante. Así que estamos obteniendo $0 Perfecto. Simplemente haremos eso para la propina del tres porcentaje. El porcentaje va a ser un poco diferente, pero para el último campo de texto, vamos a decir que el valor es igual al número de. Ahí tenemos un número de personas puestas a cero. Perfecto. Estamos bien para irnos. En ese sentido, lo siguiente que quiero hacer es crear algún set, ¿verdad? Cuando el valor en estas entradas cambia, queremos activar alguna función. Sigamos adelante y escribiremos esa función. Y en realidad podemos escribir esa función en calculadora de propinas o podemos escribirla en costo. No importa, solo depende de lo que sea para nosotros. Si sigo adelante y lo escribo en entrada de costos, puedo decir que necesito pasar en el set. Quiero pasar al setter. ¿Quieres pasarte solo función aleatoria? Pasaremos el setter porque creo que voy a estar más limpio u. bien, y luego como ella nos está dando un conjunto similar de errores Sí, sólo vamos a dejar esto aquí, y luego voy a dejar esto aquí. Entonces la diferencia aquí es que en realidad vamos a pasar, va a ser paréntesis es igual a vacío Y así es como le dices a Typescript que es una función por la que estamos pasando Esencialmente, si la función tomó algo así como tomó una R, ese era todo el número de tipo por ejemplo, entonces podríamos especificar eso también. Totalmente bien dejarla como en blanco por ahora. Pero definitivamente podríamos especificar el tipo si fuera necesario. Y mira ya estamos recibiendo un error aquí. En realidad no es capaz de establecer su tipo void, tenemos que configurarlo a este tipo. En realidad es bueno. Nos da el tipo exacto que quiere que usemos. Si fuera una función regular, podríamos usar type void. Pero debido a que estas son acciones de estado establecidas, necesitamos usar los tipos muy específicos que nos están dando. Eso está bien, solo importamos esos tipos y luego deberíamos estar bien para ir. Impresionante, Gran cosa sobre mecanografiado. Te dirá qué tipos importan. Bien, ahora queremos decir, para nuestro campo de texto, queremos decir sobre el cambio, queremos En cambio, queremos establecer la factura total para que sea el valor. Permítanme realmente crear una función aquí dice ley de actualización constante que vamos a pasar, que va a ser el evento. Yo digo set bill va a ser Targetvalue Esa va a ser la forma en que vamos a poder agarrar o realmente hacer. En realidad no necesitamos hacer todo eso. Lo siento. Podemos simplemente sentarnos en la factura del conjunto de cambios, solo pasaremos en valor de Sarge Y debería poder simplemente agarrarlos. Debería poder simplemente agarrar el valor de E, que es como el evento que está siendo, está escuchando el tipo de argumento de tensión, no asignable al tipo de parámetro de números Dime que el valor que voy a recuperar es en realidad una cadena, no un número. Pero lo que puedo hacer en realidad es simplemente lanzarlo para que sea un número. Dígale que va a ser un número que solucionará ese tipo de error. A veces un poco molesto. Tienes que cambiar muchas pequeñas cosas para asegurarte de que no estás recibiendo errores de tipo. Pero creo que vale la pena porque funciona en el tipo final en 57, luego el número en el estado, quiero decir, no lo podemos ver aquí, pero el número en el estado sería 57, lo cual es genial. Entonces eso es bueno para ir. Bien, así que tenemos eso listo. Hagamos lo mismo por aquí. En lugar de factura total, vamos a decir establecer el número de personas establecido en lo mismo, el valor objetivo. Cuando ese valor cambia, cambiamos el número de personas. Me pregunto si cambia al valor predeterminado si eso hace alguna diferencia. Bien, por ahora solo lo haremos una jugada de valor. Bien, entonces tenemos esos dos establecidos. El último que quiero manejar es el porcentaje que necesitamos para manejarlo de dos maneras. Básicamente, cuando un usuario cambia como tipos en algo en el campo de texto personalizado aquí. Y de hecho lo voy a dar, ¿tiene etiqueta? Creo que necesita valor o un valor predeterminado es igual a personalizado por porcentaje. Ahora un poco porcentaje, 1,000% Sí Cuando un usuario escribe aquí o hace clic en un botón aquí, necesitamos asegurarnos de que el porcentaje porcentual se actualice para que coincida con eso. Lo que quiero hacer es decir ya sea al click, bueno, realmente no importa, es, estamos listando para ambos. Pero se hace clic en uno, el valor cambia cuando se agrega algo a este número que cambia, lo que ocurra último es el que Al hacer clic, voy a crear una función on click. Vamos a decir al click vamos a decir conjuntos a porcentaje para ser por ciento. Y nos está dando ese mismo error, pero esta vez es correcto darnos ese mismo error porque hemos dicho que es una cadena. Lo que en realidad voy a hacer es convertirlos en objetos. Voy a decir por ciento, y entonces la cantidad real de multiplicación que usaríamos es 0.05 Y así es como vamos a resolver este problema Tenemos nuestra cadena y luego también tenemos nuestro número real que podemos usar. Esa debería ser una solución bastante sencilla. voy a decir. Y entonces la clave ahora tiene que ser por ciento. Ay, Ash. En realidad, esa no era la forma correcta de hacer este título porcentual. Ese por ciento, eso es lo que debería haber hecho. Todo bien. Lo siento. Déjame arreglar esto muy rápido. Todo bien. Impresionante. Entonces digamos que el título por ciento es la clave, entonces el valor porcentual es la cantidad y luego el título por ciento es lo que muestra en la culata arregló ese problema ahí. Ahora hemos puesto todas esas cosas. Lo último que hay que configurar es el archivo de texto. Sólo vamos a tomar prestada la funcionalidad de cambio aquí, base porcentual, Todo lo que obtenemos del valor objetivo Sí, deberíamos ser buenos en ese sentido. Volveré a Calculadora de propinas y podremos probar, en realidad para ver si esto funciona, podemos decir consola dot log. Digamos que el porcentaje total de propina de facturas y el número de personas en la consola registran cada uno de estos e inspeccionados en nuestra consola. Ahora mismo son todos cero, lo cual tiene sentido porque los hemos establecido en default a cero. Entonces si digo que la factura total es de 100, verás los primeros cambios de número. El solo selecciono diez, obtiene el 0.1 que es lo que esperamos que suceda si agrego en cinco personas, la última cambia, entonces sabemos que en realidad está funcionando correctamente. Bueno para ir. En ese sentido, voy a quitar este registro de consola por ahora igual de genial. Entonces sabemos que la información se está pasando a la calculadora de propinas correctamente, manera que las cosas realmente están sucediendo correctamente. Ahora bien, la razón por la que no quería hacer una paliza calculadora de propinas antes con todas estas pequeñas funcionalidades, porque ahora vas a crear algunas funciones dentro de la calculadora de propinas, necesitamos calcular cuál la cantidad de propina por persona y cuál debería ser el total por persona Para ello, necesitamos crear dos funciones. Decimos constante obtener propina por persona y luego crearemos otra. Obtener total por persona. Podemos hacer esto aquí o podemos hacerlo en insumo de costos. Realmente no importa. Pero si lo hacemos aquí, entonces no necesitamos perforar un conjunto adicional de apoyos en la salida de la factura, debería decir Si consigo nivel o tal vez sí queremos perforarlo en Sí, tal vez sí queremos hacerlo, en realidad, lo siento. Hagámoslo en la salida de facturas solo para mantener las cosas limpias. Bien, entonces vamos a crear estos dos aquí, pero lo que sí tenemos que hacer es pasar tres apoyos para facturar la salida Al igual que como teníamos una interfaz en la entrada de costos. Voy a crear una interfaz en la salida de facturas. Simplemente copia y pega eso desde el, agarra estos de aquí, allá. Entonces ahora en la función aquí, voy a decir obtener propina por persona. Somos la propina por persona sería la factura total multiplicada el porcentaje de propina dividido por el número de personas dividido por el número de personas. Esa será la persona de propina. Podemos decir que esta cantidad o en realidad no necesitamos crear una función completa, solo diremos propina constante por persona, persona es igual, ahí vamos. Y luego diremos que esta es la propina por persona, esa es la propina persona. Sí, acabamos de decir que la propina por persona es una factura total multiplicada el porcentaje de propina dividido por el número de personas actualmente. No es un número porque no tenemos esos números. Pero lo arreglaremos en tan solo 1 segundo. Bien, lo siguiente que vamos a hacer es total por persona. Total por persona va a ser la propina por persona, La factura total dividida por el número de personas más la propina por persona. De esa manera podemos usar eso para nuestra segunda función. Digamos que este va a ser nuestro total por persona, por persona. Eso tiene sentido. Factura total por el número de personas más la persona de propina. Impresionante. Ahora mismo estamos consiguiendo un número. Me pregunto si es no, deberían estar entrando ya que los números se pueden especificar que. Me pregunto si no van a entrar como número por alguna razón. Veamos qué pasa si cambio el número aquí. O, ya sabes, podría ser, creo que sé dónde está el tema. En realidad no estamos pasando las variables, así que eso probablemente crearía un problema bonito, bastante grande ahí. Muy bien, increíble. Así que ya lo hemos enganchado. Entonces sí, si puedes ver aquí con establecer la propina al 10% el monto de la propina terminaría siendo de $2 por persona. Y entonces el total por persona sería entonces de 22 dólares lo cual tiene sentido $100 divididos por cinco personas serían $20 por persona más $102 propina $22 Podemos hacer un poco de forma sumando aquí solo para que se vea un poco más limpio Solo podemos agregar un letrero de $1 aquí. Agrega $1 regístrate aquí. Se puede cambiar hacia arriba. A ver si al pulsar el botón cambia, cambia los montos ahí. Lo último que probablemente podríamos hacer es simplemente conectar nuestro botón de reinicio. Simplemente reinicia todo a cero. Entonces sí, como puedes ver, Typescript no es tan diferente de Es bastante similar en la forma en que operaría en una aplicación de reacción o en una aplicación web simple de JavaScript mecanografiado La única diferencia es poder ver los errores antes de que ocurran. Entonces como por aquí, el error era que ni siquiera habíamos pasado el, si se trataba de una aplicación Javascript, podríamos haber pasado como diez, 50 minutos tratando de depurar el problema y averiguar cuál es el problema. Lo mejor del script tipo es que solo te permite, oye, aquí es donde está el problema. Ese manejo rápido de errores antes de continuar e iniciar su aplicación y las cosas no funcionan, no lo sabes. Sí, así es como configurar un script tipo, reaccionar aplicación, ojalá eso fuera útil. 12. CONCLUSIÓN: Conclusión de la que hablamos mucho en este video. Desde los conceptos básicos del mecanografiado hasta la creación de tu propia aplicación web mecanografiada futuro, deberías poder comenzar a construir tus propios sitios web desde cero usando mecanografiado Solo recuerda buscar algo cuando no estés seguro de ello. Me encantaría ver cómo resulta tu sitio web, así que por favor deja un enlace a tu código, una captura o el sitio alojado en la pestaña Proyecto y recursos a continuación, para que pueda ver todo el trabajo duro que has hecho. Leo cada comentario, cada reseña y miro cada envío de proyectos. Entonces, si tiene alguna pregunta, no dude en dejar un comentario en la sección de revisión a continuación o comunicarse conmigo directamente. Consulta mi página de perfil para obtener más información al respecto. Si quieres saber más sobre codificación, consulta los otros videos que tengo en mi página de perfil. También tengo videos en Next GS y React disponibles en mi canal de Youtube y sitio web. Los vincularé a continuación y en mi perfil si estás interesado en aprenderlos también, y los veré en el siguiente.