Os modelos de aprendizado de máquina produzem tipos TypeScript que passam na verificação de tipos?
Author
Venue
Conferência Europeia de Programação Orientada a Objetos (ECOOP) 2023
Abstract
A migração de tipos é o processo de adicionar tipos a código não tipado para obter garantia em tempo de compilação. O TypeScript e outros sistemas de tipos graduais facilitam a migração de tipos, permitindo que os programadores comecem com tipos imprecisos e os fortaleçam gradualmente. No entanto, adicionar tipos é um trabalho manual, e várias migrações em grandes bases de código da indústria levaram, segundo relatos, vários anos. Na comunidade de pesquisa, tem havido um interesse significativo no uso de aprendizado de máquina para automatizar a migração de tipos no TypeScript. Modelos de aprendizado de máquina existentes relatam um alto grau de precisão na previsão de anotações de tipos individuais do TypeScript. No entanto, neste artigo, argumentamos que a precisão pode ser enganosa e que devemos abordar uma questão diferente: uma ferramenta de migração de tipos automática pode produzir código que seja aprovado pelo verificador de tipos do TypeScript? Apresentamos o TypeWeaver, uma ferramenta de migração de tipos do TypeScript que pode ser usada com um modelo de previsão de tipos arbitrário. Avaliamos o TypeWeaver com três modelos da literatura: DeepTyper, uma rede neural recorrente; LambdaNet, uma rede neural de grafos; e InCoder, um transformador de uso geral e multilíngue que suporta tarefas de preenchimento de lacunas. Nossa ferramenta automatiza várias etapas necessárias para o uso de um modelo de previsão de tipos: (1) importação de tipos para as dependências de um projeto; (2) migração de módulos JavaScript para a notação TypeScript; (3) inserir anotações de tipos previstos no programa para gerar TypeScript quando necessário; e (4) rejeitar previsões de tipos inválidos quando necessário. Avaliamos o TypeWeaver em um conjunto de dados de 513 pacotes JavaScript, incluindo pacotes que nunca foram tipados antes. Com o melhor modelo de previsão de tipos, constatamos que apenas 21% dos pacotes passam na verificação de tipos, mas, o que é mais encorajador, 69% dos arquivos passam na verificação de tipos com sucesso.
