¿Generan los modelos de aprendizaje automático tipos de TypeScript que superan la comprobación de tipos?
Author
Venue
Conferencia Europea de Programación Orientada a Objetos (ECOOP) 2023
Abstract
La migración de tipos es el proceso de añadir tipos a código sin tipificar para obtener garantías en tiempo de compilación. TypeScript y otros sistemas de tipos graduales facilitan la migración de tipos al permitir a los programadores comenzar con tipos imprecisos y reforzarlos gradualmente. Sin embargo, añadir tipos es una tarea manual y se ha informado de que varias migraciones en grandes bases de código industriales han llevado varios años. En la comunidad investigadora, ha habido un gran interés en utilizar el aprendizaje automático para automatizar la migración de tipos en TypeScript. Los modelos de aprendizaje automático existentes muestran un alto grado de precisión en la predicción de anotaciones de tipos individuales de TypeScript. Sin embargo, en este artículo argumentamos que la precisión puede ser engañosa, y que deberíamos abordar una cuestión diferente: ¿puede una herramienta de migración de tipos automática producir código que supere el verificador de tipos de TypeScript? Presentamos TypeWeaver, una herramienta de migración de tipos de TypeScript que se puede utilizar con cualquier modelo de predicción de tipos. Evaluamos TypeWeaver con tres modelos de la bibliografía: DeepTyper, una red neuronal recurrente; LambdaNet, una red neuronal de grafos; e InCoder, un transformador polivalente y multilingüe que admite tareas de «rellenar el medio». Nuestra herramienta automatiza varios pasos necesarios para utilizar un modelo de predicción de tipos: (1) importar tipos para las dependencias de un proyecto; (2) migrar módulos de JavaScript a la notación de TypeScript; (3) la inserción de anotaciones de tipos predichos en el programa para generar TypeScript cuando sea necesario; y (4) el rechazo de predicciones de tipos erróneas cuando sea necesario. Evaluamos TypeWeaver en un conjunto de datos de 513 paquetes de JavaScript, incluidos paquetes que nunca antes habían sido tipados. Con el mejor modelo de predicción de tipos, observamos que solo el 21 % de los paquetes superan la comprobación de tipos, pero, lo que es más alentador, el 69 % de los archivos superan la comprobación de tipos con éxito.
