Capítulo 4. Genéricos
Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com
Hasta ahora, nuestro principal objetivo era tomar la flexibilidad inherente de JavaScript y encontrar una forma de formalizarla mediante el sistema de tipos. Añadimos tipos estáticos para un lenguaje tipado dinámicamente, para comunicar la intención, conseguir herramientas y detectar errores antes de quese produzcan.
Sin embargo, algunas partes de JavaScript no se preocupan realmente de los tipos estáticos. Por ejemplo, una función isKeyAvailableInObject sólo debe comprobar si una clave está disponible en un objeto; no necesita saber nada de los tipos concretos. Para formalizar adecuadamente una función como ésta, podemos utilizar el sistema de tipos estructurales de TypeScript y describir un tipo muy amplio a cambio de información o un tipo muy estricto a cambio deflexibilidad.
Pero no queremos pagar cualquier precio. Queremos tanto flexibilidad como información. Los genéricos en TypeScript son justo la bala de plata que necesitamos. Podemos describir relaciones complejas y formalizar la estructura de los datos que aún no se han definido.
Los genéricos, junto con su pandilla de tipos mapeados, mapas de tipos, modificadores de tipos y tipos ayudantes, abren la puerta al metatipado, donde podemos crear nuevos tipos basados en los antiguos y mantener intactas las relaciones entre tipos, mientras los tipos recién generados cuestionan nuestro código ...