本網站內容使用人工智慧(AI)或機器翻譯技術翻譯,可能存在錯誤。

Skip to content
Programming Languages
Artificial Intelligence

機器學習模型所產生的 TypeScript 類型是否能通過型別檢查?

Author

Ming-Ho Yee(東北大學)與 Arjun Guha(東北大學及 Roblox)

Venue

2023年歐洲物件導向程式設計會議(ECOOP)

Abstract

類型遷移是指為無類型代碼添加類型,以在編譯時獲得保證的過程。TypeScript 及其他漸進式類型系統透過允許程式設計師從不精確的類型開始,並逐步強化它們,從而促進類型遷移。然而,添加類型是一項手動工作,據報導,針對大型產業程式碼庫的數次遷移甚至耗時數年。在研究界,利用機器學習來自動化 TypeScript 類型遷移已引起廣泛關注。 現有的機器學習模型在預測個別 TypeScript 類型註解方面,報告了極高的準確度。然而,本文主張準確度可能具有誤導性,我們應著眼於不同的問題:自動類型遷移工具能否產生通過 TypeScript 類型檢查器的程式碼?我們提出 TypeWeaver,這是一款可與任意類型預測模型配合使用的 TypeScript 類型遷移工具。 我們使用文獻中的三種模型對 TypeWeaver 進行評估:DeepTyper(一種循環神經網路);LambdaNet(一種圖神經網路);以及 InCoder(一種支援「填入中間」任務的通用多語言變換器)。我們的工具自動化了使用類型預測模型所需的幾個步驟:(1) 為專案的依賴項導入類型;(2) 將 JavaScript 模組轉換為 TypeScript 語法; (3) 將預測的類型註解插入程式中,以在需要時產生 TypeScript 程式碼;以及 (4) 在必要時拒絕非類型預測。我們在包含 513 個 JavaScript 套件的資料集上對 TypeWeaver 進行評估,其中包含從未被賦予類型的套件。使用最佳的類型預測模型時,我們發現僅有 21% 的套件通過類型檢查,但更令人鼓舞的是,69% 的檔案成功通過類型檢查。