Programming Languages
Artificial Intelligence
机器学习模型生成的 TypeScript 类型能否通过类型检查?
Author
Venue
2023年欧洲面向对象编程会议(ECOOP)
Abstract
类型迁移是指为无类型代码添加类型,从而在编译时获得保证的过程。TypeScript 及其他渐进式类型系统通过允许程序员从不精确的类型开始并逐步强化它们,从而促进了类型迁移。然而,添加类型是一项手动工作,据报道,针对大型工业代码库的几次迁移耗时长达数年。在研究界,利用机器学习实现 TypeScript 类型迁移的自动化引起了广泛关注。 现有机器学习模型在预测单个 TypeScript 类型注解方面报告了较高的准确率。然而,本文认为准确率可能具有误导性,我们应关注另一个问题:自动类型迁移工具能否生成通过 TypeScript 类型检查器的代码?我们提出 TypeWeaver,这是一款可与任意类型预测模型配合使用的 TypeScript 类型迁移工具。 我们使用文献中的三种模型对 TypeWeaver 进行了评估:DeepTyper(一种循环神经网络);LambdaNet(一种图神经网络);以及 InCoder(一种支持中间填充任务的通用多语言 Transformer)。我们的工具自动化了使用类型预测模型所需的几个步骤:(1) 导入项目依赖项的类型;(2) 将 JavaScript 模块迁移到 TypeScript 语法; (3) 在需要时将预测的类型注释插入程序以生成 TypeScript;以及 (4) 在需要时拒绝非类型预测。我们在包含 513 个 JavaScript 包的数据集上对 TypeWeaver 进行了评估,其中包括从未被类型化的包。使用最佳类型预测模型时,我们发现仅有 21% 的包通过了类型检查,但更令人鼓舞的是,69% 的文件成功通过了类型检查。
