Y luego, solo necesitamos verificar si quedan argumentos o no. Si los hay, podemos mantener esta expresión porque significa que hay argumentos numéricos para esta llamada a console.log. Si no los hay, podemos eliminar toda la expresión con path.remove.
Así que sí, este ejemplo es bastante irreal. No creo que haya un caso de uso real para console.log y los tipos de los parámetros de console.log. Pero hay un ejemplo un poco más práctico en el que he estado trabajando con Compile Time CSS y una biblioteca de JS.
He estado trabajando en una biblioteca llamada Tidy, y la idea es que pueda proporcionar una interfaz funcional simple con la función CSS, que acepta propiedades como estilos en línea. Pero la idea es que en lugar de generar estos estilos en tiempo de ejecución, podemos compilarlos durante el tiempo de compilación y extraerlos en una hoja de estilos separada.
En este caso, eso es bastante sencillo porque el valor azul y el valor amarillo son estáticos. Por lo tanto, podemos obtenerlos directamente del árbol de sintaxis. Pero ¿qué pasa si nuestro código es un poco más complicado? Y por ejemplo, nuestros estilos dependen del tiempo de ejecución. En este caso, el color y el font-weight dependen de la propiedad de variante y la propiedad de peso, que no se conocen durante el tiempo de compilación.
Pero con TypeScript, podemos obtener el tipo real de cada una de las propiedades. Por ejemplo, para el color, podemos ver que puede ser violeta o morado. Y para font-weight, podemos ver que es una unión de los valores lighter, normal y bold. Lo que nos permite recorrer estos valores y generar clases predefinidas para cada uno de los valores.
Gracias a la representación atómica de estilos, podemos componer estos elementos al final, al igual que la composición de nombres de clases. Y todo lo que necesitamos en tiempo de ejecución es identificar el hash correcto para el nombre de clase para este valor específico. No hay generación de estilos. Y nuevamente, podemos beneficiarnos de la compilación de estilos durante el tiempo de compilación y extraerlo en una hoja de estilos separada.
Si eso te parece interesante, por favor visita el sitio web de tidy.dev y el repositorio de tidy. Aún está en un estado bastante experimental, pero cualquier comentario o idea será muy apreciada.
Y al final, solo algunas notas. Utiliza TSMorph para una interfaz programable para interactuar con el compilador de TypeScript. Y puedes obtener sugerencias de tipos de TypeScript en Babel o cualquier otro recorredor de AST solo desde la posición en el código, lo cual es muy útil. La integración de TypeScript puede ralentizar el análisis estático debido a la sobrecarga, por lo que podría ser una buena idea aplicar algunas optimizaciones de rendimiento, por ejemplo, aislarlo en un trabajador separado.
Existen docenas de protocolos de servidor de lenguaje diferentes. No se trata solo de TypeScript. Por lo tanto, también puedes construir muchas integraciones diferentes.
Y al final, por último pero no menos importante, los tipos no son 100% confiables y no pueden serlo porque existen tipos como any o comandos como TSignore. Por lo tanto, cuanto más atención prestes a la seguridad de tipos en tu código, más podrás beneficiarte de ella, especialmente durante la compilación y el tiempo de compilación. Aquí tienes algunos enlaces útiles. Por favor, échales un vistazo y muchas gracias por tu atención.
Comments