Treści na tej stronie zostały przetłumaczone przy użyciu sztucznej inteligencji (AI) lub technologii tłumaczenia maszynowego i mogą zawierać błędy.

Skip to content
Programming Languages
Artificial Intelligence

Czy modele uczenia maszynowego generują typy TypeScript, które przechodzą sprawdzanie typów?

Author

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

Venue

Europejska konferencja poświęcona programowaniu obiektowemu (ECOOP) 2023

Abstract

Migracja typów to proces dodawania typów do kodu bez typów w celu uzyskania pewności w czasie kompilacji. TypeScript i inne systemy typów stopniowych ułatwiają migrację typów, pozwalając programistom zacząć od nieprecyzyjnych typów i stopniowo je wzmacniać. Jednak dodawanie typów wymaga ręcznej pracy, a kilka migracji w dużych, przemysłowych bazach kodu trwało podobno kilka lat. W środowisku badawczym pojawiło się duże zainteresowanie wykorzystaniem uczenia maszynowego do automatyzacji migracji typów w TypeScript. Istniejące modele uczenia maszynowego wykazują wysoki stopień dokładności w przewidywaniu poszczególnych adnotacji typów TypeScript. Jednak w niniejszym artykule argumentujemy, że dokładność ta może być myląca i powinniśmy zająć się innym pytaniem: czy narzędzie do automatycznej migracji typów może wygenerować kod, który przejdzie sprawdzanie typów TypeScript? Przedstawiamy TypeWeaver, narzędzie do migracji typów TypeScript, które może być używane z dowolnym modelem przewidywania typów. Oceniamy TypeWeaver przy użyciu trzech modeli znanych z literatury: DeepTyper, rekurencyjnej sieci neuronowej; LambdaNet, graficznej sieci neuronowej; oraz InCoder, uniwersalnego, wielojęzycznego transformatora obsługującego zadania typu „wypełnij środek”. Nasze narzędzie automatyzuje kilka kroków niezbędnych do korzystania z modelu przewidywania typów: (1) importowanie typów dla zależności projektu; (2) migrację modułów JavaScript do notacji TypeScript; (3) wstawianie przewidywanych adnotacji typów do programu w celu wygenerowania TypeScript w razie potrzeby; oraz (4) odrzucanie przewidywań niebędących typami w razie potrzeby. Oceniamy TypeWeaver na zbiorze danych zawierającym 513 pakietów JavaScript, w tym pakiety, które nigdy wcześniej nie były typowane. Przy użyciu najlepszego modelu przewidywania typów stwierdzamy, że tylko 21% pakietów przechodzi sprawdzanie typów, ale co bardziej zachęcające, 69% plików przechodzi sprawdzanie typów pomyślnie.