Si observas el código fuente de esto, verás que es un libro que habla sobre nodos y ¿dónde está este acceso? ¿Dónde se ha definido? Espero que te dé una idea de cómo funcionan estos linters de código y qué están haciendo.
Entonces pensamos, relájate, hemos completado esa tarea, tómate un descanso y luego pasa a nuestra segunda tarea, que es introducir la escritura genérica en todo el código base.
Entonces sí, esto es algo que, antes de trabajar en aggrid, esto es algo que quería. Había agregado mis propias interfaces y como tarea, entré y dije, ¿puedo hacer esto, puedo mejorarlo? Y así tenemos esto, tengo permiso pero ahora tengo que hacer el trabajo. Los cambios que esto implica son tomar, por ejemplo, el filtro de análisis de parámetros y ver que tenemos este data, como cualquier cosa, que queremos que sea genérico. Y también necesitamos pasar ese genérico a nuestro nodo de fila. Entonces, cada vez que alguien acceda a data del nodo de fila, tendrán la interfaz correcta allí. Hay muchas interfaces y hay muchas cadenas de interfaces que tendrían que actualizarse.
Entonces, ¿por qué es esto difícil? Bueno, hay alrededor de tres a cuatrocientas interfaces y tipos y hay esta interfaz. Sería posible hacerlo por fuerza bruta, pero podrías pasar por alto algunos o simplemente sería bastante tedioso. Y ahí es donde quería sugerirte un hacha aún más afilada.
Entonces hay este proyecto llamado tsmorph. Y lo que ha hecho es tomar el compilador de TypeScript y envolver esas funciones de coincidencia con una abstracción de nivel mucho más alto. Y esto va a hacerlo mucho más fácil escribir tu lógica de una manera en la que realmente no tienes que saber la diferencia entre los diferentes tipos de nodo o si es solo una expresión de variable o si es una interfaz. Así que hace mucho del trabajo por ti.
Con esto, importamos ts-morph y apuntamos a un archivo de configuración de ts-config y eso nos construirá un proyecto. Y luego, a partir de ese proyecto, puedes decirme, dame este archivo fuente. Así que aquí estoy diciendo, dame el archivo fuente de las opciones de la cuadrícula. Así que me lo da. Y luego puedo decir, bueno, en realidad, dame todas las declaraciones de importación porque quiero saber dónde están los archivos que contienen todas las interfaces utilizadas en nuestras opciones de cuadrícula. Y luego iteramos sobre todas esas importaciones, obtenemos los archivos fuente. Y luego, a partir de cada uno de esos archivos fuente, extraemos todas las interfaces. Así que puedes ver el código que estamos escribiendo aquí debido a tsmorph es bastante sencillo. No tenemos que meternos en los detalles, pero estamos extrayendo toda la información. Estamos recopilando todas estas interfaces para poder razonar sobre ellas. Y luego haremos algo así. Tenemos todas nuestras interfaces. Luego buscaremos la propiedad de datos en ellas. Usando esto como obtener propiedad. Y luego veremos el tipo, decimos, ¿es ese un tipo cualquiera? Y luego esta es la siguiente etapa, que probablemente debería haber resaltado un poco más en las diapositivas.
Comments