Y esta es una herramienta de código abierto que generará automáticamente código TypeScript a partir de un esquema GraphQL o una operación de consulta GraphQL. Por lo tanto, usamos Codegen tanto en el servidor como en el cliente. En el lado del servidor, lo usamos para generar tipos para nuestros resolutores GraphQL. Y en el cliente, lo usamos para generar el cliente de
Daré algunos ejemplos de las diferencias entre cómo lo usamos en el servidor y en el cliente. Usar Codegen en sí es bastante fácil. Codegen proporciona una herramienta de línea de comandos que es bastante fácil de usar. Solo tienes que ejecutar Codegen y darle una configuración.
Quiero dar un ejemplo específico de cómo estamos usando Codegen en el servidor. Este es un fragmento de código tomado de nuestra base de código. Esto representa el esquema de conexión de entorno que está diseñado para representar una lista de entornos de proyecto. Y usar la nomenclatura de conexión de código es común en GraphQL cuando se representa listas paginadas de data. El resolutor para esta conexión simplemente obtiene de la base de datos los entornos del proyecto y devuelve una lista de entornos.
Uno de los problemas que encontramos al usar TypeScript en GraphQL ha sido agregar seguridad de tipos a estas funciones de resolución. Por ejemplo, de forma predeterminada, los argumentos como límite, después de filtro no generan tipos para ellos. Por lo tanto, tenemos que agregar manualmente los tipos nosotros mismos. Este es un ejemplo de un tipo que definimos explícitamente para esos argumentos del resolutor. Y Codegen de GraphQL proporciona una solución alternativa para estos problemas. Te permite agregar explícitamente una configuración para anular su generación interna. Por ejemplo, en este caso, estamos anulando la generación de la conexión de entorno usando nuestros tipos definidos explícitamente aquí. En el modelo de conexiones de entorno, se asigna a la definición del esquema de conexión de entorno.
En el lado del cliente, puedes usar la herramienta de línea de comandos de la misma manera simplemente llamando a CodeGen de GraphQL. La generación de código es mucho más fácil en el cliente. Dada una consulta GraphQL como esta, en este ejemplo estamos obteniendo una lista de entornos de nuestro servidor GraphQL. Y podemos generar un hook a partir de esa consulta usando CodeGen de GraphQL. Este hook obtendrá los datos que necesitamos y será completamente seguro en cuanto a tipos. Entonces, en este ejemplo, como puedes ver, cuando llamas o escribes en tu editor de texto query.results, podrás ver los diferentes atributos que tiene ese objeto.
Algunos de los beneficios que hemos experimentado al migrar a esta arquitectura han sido la depuración. Es mucho más fácil que el comprobador de tipos detecte posibles problemas. El rendimiento, hay varias optimizaciones en tiempo de compilación que se pueden obtener al tener tu base de código en TypeScript, y hemos visto un aumento en el rendimiento de nuestra aplicación. En cuanto a la navegación en la base de código, tener esas anotaciones de tipo ha hecho que trabajar con bibliotecas internas sea mucho más fácil de usar, especialmente bibliotecas que no tienen una muy buena documentación. Y un beneficio adicional de usar TypeScript ha sido mejorar nuestra experiencia general como desarrolladores, ya que ha permitido a los desarrolladores de front-end y back-end trabajar en paralelo sin depender uno del otro.
Algunas de mis reflexiones finales son que migrar una base de código monolítica es un desafío, pero con la arquitectura adecuada, incluso un equipo pequeño puede hacerlo posible. Hemos obtenido muchos beneficios al configurar esos puntos finales internos y simplemente usar GraphQL como un proxy para nuestra API interna. Y en general, TypeScript mejoró nuestra capacidad para depurar y optimizar nuestro código. Eso es todo. Gracias.
Comments