Para las herramientas de edición, podríamos considerar el formato. Prettier descompone nuestro código en un AST y lo reconstruye con la indentación estándar, donde van los corchetes, todas esas cosas de una manera puramente estándar que no tenemos que preocuparnos o hacer manualmente, lo cual es genial. Las anotaciones de tipo en los editores de JetBrains son realmente geniales. Así que podrías obtener los nombres de los argumentos de una función anotados. Si no estás pasando un objeto con props, si estás pasando argumentos ordenados, tener esos nombres es realmente agradable como una experiencia de desarrollador. También pueden anotar tipos inferidos cuando estás asignando una variable o un valor de retorno.
Otro aspecto realmente interesante de las herramientas de edición es el resaltado de sintaxis. Ten en cuenta que la mayoría de los resaltados de sintaxis se basan en gramáticas de texto, que son fundamentalmente expresiones regulares bajo el capó, pero VS Code incluye una característica llamada resaltado semántico que utiliza conocimientos de los servidores de lenguaje para varios lenguajes para darnos un resaltado un poco más preciso de lo que está pasando en nuestro código.
Y finalmente, los mods de código. Así que piensa en las actualizaciones de marco. Hoy en día, no tenemos que hacer import React from React, y si tienes una base de código que está haciendo eso, si has actualizado tus empaquetadores o compiladores, es posible que ya no necesites hacer eso. Así que en su lugar, podríamos tener un mod de código de React que lo elimine automáticamente en toda la base de código en lugar de ir archivo por archivo, eliminando manualmente esas cosas. Otra opción es convertir la función dot bind this en una función de flecha, que es lo que un dot bind this para una función está haciendo bajo el capó, pero es solo azúcar sintáctica. Todas estas cosas son agradables para los autores de marcos y bibliotecas para implementar como cosas que nos ayudan a actualizar y mantenernos al día, porque no quieren tratar y lidiar con bugs para versiones antiguas de su marco de todos modos.
Entonces, ¿cómo podrías escribir algunas herramientas usando ASTs? ¿Cuáles son algunas herramientas o herramientas de escritura? Bueno, veamos ts, es decir, TypeScript. Veamos unist, tsmorph y tree sitter. Esos son los que realmente voy a profundizar. Así que ts es literalmente TypeScript. Solo importarías TypeScript, harías ts dot create source file a partir del fragmento de texto que tienes, y luego puedes iterar cada nodo dentro de ese árbol usando for-each-child, buscando el tipo de nodo que te interesa. Aquí, estoy buscando una declaración de clase A. Unist es muy interesante porque no hay un estándar para cómo los ASTs deben especificar props y cómo podemos entender qué partes del código son y qué tipo de nodo es, etc. Una cosa a recordar, sin embargo, es que unist no está destinado a ser autosuficiente, es una línea de base para que otras cosas la utilicen. Así, HAST para HTML, MDEST para Markdown, ZAST para XML, o SAS para CSS, SCS, y less. Todas estas herramientas añaden sus propias props a ese tipo de nodo que ayudan a darnos un poco más de información sobre qué está haciendo el código y más metadatos que podemos usar para manipular ese código o entenderlo mejor. Una cosa importante es que hay algo así como 32 funciones de utilidad escritas para unist, y probablemente haya incluso más. Todas estas funciones de utilidad pueden ser utilizadas para cualquier árbol de sintaxis compatible con unist, lo que significa que no tienes que escribir muchas de esas funciones de patrón de visitante a mano, lo cual es realmente genial. ts-morph es muy interesante porque es útil para las transformaciones de código. Piensa en mods de código como react-code-mod. Creo que react-code-mod usa JS code shift, pero podría estar equivocado al respecto. Pero aún así, ts-morph es algo que tengo experiencia
Comments