Konten di situs ini telah diterjemahkan menggunakan kecerdasan buatan (AI) atau teknologi penerjemahan mesin, dan mungkin terdapat kesalahan.

Skip to content
Programming Languages
Artificial Intelligence

Apakah Model Pembelajaran Mesin Menghasilkan Tipe TypeScript yang Lulus Pemeriksaan Tipe?

Author

Ming-Ho Yee (Northeastern) dan Arjun Guha (Northeastern dan Roblox)

Venue

Konferensi Eropa tentang Pemrograman Berorientasi Objek (ECOOP) 2023

Abstract

Migrasi tipe adalah proses penambahan tipe ke kode yang tidak bertipe untuk mendapatkan jaminan pada saat kompilasi. TypeScript dan sistem tipe bertahap lainnya memfasilitasi migrasi tipe dengan memungkinkan programmer untuk memulai dengan tipe yang tidak tepat dan secara bertahap memperkuatnya. Namun, penambahan tipe merupakan upaya manual dan beberapa migrasi pada basis kode industri yang besar dilaporkan telah memakan waktu beberapa tahun. Di komunitas penelitian, terdapat minat yang signifikan dalam menggunakan pembelajaran mesin untuk mengotomatiskan migrasi tipe TypeScript. Model pembelajaran mesin yang ada melaporkan tingkat akurasi yang tinggi dalam memprediksi anotasi tipe TypeScript individu. Namun, dalam makalah ini kami berargumen bahwa akurasi dapat menyesatkan, dan kami harus menjawab pertanyaan yang berbeda: apakah alat migrasi tipe otomatis dapat menghasilkan kode yang lulus pemeriksa tipe TypeScript? Kami memperkenalkan TypeWeaver, alat migrasi tipe TypeScript yang dapat digunakan dengan model prediksi tipe apa pun. Kami mengevaluasi TypeWeaver dengan tiga model dari literatur: DeepTyper, jaringan saraf rekurens; LambdaNet, jaringan saraf graf; dan InCoder, transformer serbaguna multi-bahasa yang mendukung tugas pengisian tengah. Alat kami mengotomatisasi beberapa langkah yang diperlukan untuk menggunakan model prediksi tipe, (1) mengimpor tipe untuk dependensi proyek; (2) memigrasikan modul JavaScript ke notasi TypeScript; (3) menyisipkan anotasi tipe yang diprediksi ke dalam program untuk menghasilkan TypeScript saat diperlukan; dan (4) menolak prediksi non-tipe saat diperlukan. Kami mengevaluasi TypeWeaver pada dataset 513 paket JavaScript, termasuk paket yang belum pernah ditipe sebelumnya. Dengan model prediksi tipe terbaik, kami menemukan bahwa hanya 21% paket yang lolos pengecekan tipe, namun yang lebih menggembirakan, 69% berkas berhasil lolos pengecekan tipe.