También admite validadores a través de ClipAllian, a través, perdón, a través de TipAllian, que es el validador de tipos, el validador de tipos en tiempo de ejecución que mencioné antes. Entonces, si tienes una opción de cadena, también puedes validar que su formato sea realmente un número, en cuyo caso TypeScript refinará correctamente el número para que sea un número en lugar de una cadena. ClipAllian admite muchas cosas. Es el marco que estamos utilizando en la CLI de Yarn, que hace muchas cosas diferentes. Admite argumentos posicionales opcionales, argumentos posicionales requeridos, argumentos posicionales de tarjeta. Por ejemplo, cuando ejecutas Yarn ESLint y aceptas opciones, eso es una tarjeta porque estamos aceptando cualquier cosa. Admite booleanos, cadenas, matrices, tablas, contadores. Implementa el análisis de los tokens de la CLI a través de una máquina de estados, lo cual es algo muy único. Significa que simplemente estamos generando una máquina de estados completa con poco margen para errores. Muchos marcos de CLI en la actualidad intentan analizar los tokens uno por uno a través de un bucle for, básicamente. Pero corres el riesgo de tener muchos errores. También nos permite admitir sobrecargas. Por ejemplo, puedes tener comandos diferentes con la misma ruta pero opciones o requisitos diferentes. ClipAllian podrá determinar cuál es el que debe usar, dependiendo de lo que el usuario haya proporcionado. Manejo de errores nativo, anulación de tiempo de ejecución baja y, por supuesto, es completamente seguro en cuanto a tipos. Por ejemplo, dada la siguiente declaración de comando, podrá refinar correctamente los tipos según lo que declares. Por supuesto, hay una opción regular que es booleana, que es booleana o indefinida. Pero también puedes asignar un valor predeterminado, en cuyo caso ClipAllian verá que, dado que hay un valor predeterminado, ya no puede ser indefinido. También puedes declarar una opción opcional que acepta una cadena como argumento, en cuyo caso será una cadena o indefinida, pero también puedes marcarlas como requeridas, en cuyo caso serán una cadena, porque son requeridas y si no están presentes, ClipAllian lanzará un error. También puedes declarar tuplas usando la opción ret. Tienes muchas opciones diferentes y cada vez ClipAllian hace lo correcto y realiza una comprobación de tipos adecuada. Pero también tienes otras herramientas que hacen lo mismo con sintaxis ligeramente diferentes. Primero, tienes Common.js, por supuesto, que es el más antiguo y realmente admite muy bien los tipos utilizando el paquete de typings adicionales. Funciona igual que la metacadena que vimos anteriormente. Y también tienes Oclif que tal vez sea un poco más verboso pero funciona de manera similar a ClipAllian. Eso es casi todo. ¿Qué debes recordar de esta charla? Quiero que recuerdes un par de cosas. Primero, TypeScript es una gran herramienta para los autores de CLI, incluso para las CLI internas. Cuando estás escribiendo CLI, escribiendo una aplicación dentro de una empresa, es posible que te tientes a usar TypeScript para todo lo relacionado con tu plataforma web, pero noté que muchos scripts comienzan escribiendo JavaScript, porque no se necesita transmutación. Sin embargo, si estás utilizando herramientas como TS Node, esto ya no es un problema. Puedes ejecutar tu código directamente desde las fuentes de TS sin tener que transpilarlo antes y eso es algo genial porque significa que podemos tipar correctamente el script de construcción que estamos utilizando en nuestra infraestructura. A través de un mecanismo como el que discutimos con ClipAllian, con Oclif, este tipo de cosas, significa que también puedes asegurarte de que tus scripts estén bien escritos y acepten las opciones adecuadas que esperas. La próxima vez que escribas una CLI interna, considera usar TypeScript para eso y considera usar un marco de CLI porque realmente facilitan mucho tu trabajo y evitan que cometas errores. Tienes diferentes sintaxis que puedes elegir según tus preferencias en términos de sintaxis. Vimos la metacadena, los decoradores y la tercera forma. Las nuevas características aún no están completamente listas por las razones que mencioné antes, especialmente en cuanto a la necesidad de duplicar tus tipos tanto en la anotación como en el tipo de TypeScript, pero creo que mejorarán en los próximos años, así que eso también es algo que debes tener en cuenta para el futuro. Finalmente, recuerda que ClipAllian está ahí, ha estado en producción durante muchos años, y pruébalo para tu próxima CLI. Gracias a todos, puse el enlace en la pantalla, siéntanse libres de revisar todo lo que hice para esta charla, y estoy aquí para responder sus preguntas. ¡Que tengan un buen día!
Comments