De content op deze site is vertaald met behulp van kunstmatige intelligentie (AI) of machinevertalingstechnologie en kan fouten bevatten.

Skip to content
Programming Languages
Artificial Intelligence

Leveren machine learning-modellen TypeScript-typen op die type-checken?

Author

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

Venue

Europese conferentie over objectgeoriënteerd programmeren (ECOOP) 2023

Abstract

Typemigratie is het proces waarbij typen worden toegevoegd aan ongetypeerde code om zekerheid te verkrijgen tijdens het compileren. TypeScript en andere geleidelijke typesystemen vergemakkelijken typemigratie door programmeurs in staat te stellen te beginnen met onnauwkeurige typen en deze geleidelijk te versterken. Het toevoegen van typen is echter een handmatig karwei en er zijn meldingen dat verschillende migraties op grote, industriële codebases meerdere jaren in beslag hebben genomen. In de onderzoeksgemeenschap is er aanzienlijke belangstelling voor het gebruik van machine learning om TypeScript-typemigratie te automatiseren. Bestaande machine learning-modellen rapporteren een hoge mate van nauwkeurigheid bij het voorspellen van individuele TypeScript-type-annotaties. In dit artikel stellen we echter dat nauwkeurigheid misleidend kan zijn en dat we een andere vraag moeten stellen: kan een automatische type-migratietool code produceren die de TypeScript-typechecker doorstaat? We presenteren TypeWeaver, een TypeScript-type-migratietool die kan worden gebruikt met een willekeurig typevoorspellingsmodel. We evalueren TypeWeaver met drie modellen uit de literatuur: DeepTyper, een recurrent neuraal netwerk; LambdaNet, een grafisch neuraal netwerk; en InCoder, een universele, meertalige transformer die 'fill-in-the-middle'-taken ondersteunt. Onze tool automatiseert verschillende stappen die nodig zijn voor het gebruik van een typevoorspellingsmodel: (1) het importeren van typen voor de afhankelijkheden van een project; (2) het migreren van JavaScript-modules naar TypeScript-notatie; (3) het invoegen van voorspelde type-annotaties in het programma om TypeScript te genereren wanneer dat nodig is; en (4) het afwijzen van niet-typevoorspellingen wanneer dat nodig is. We evalueren TypeWeaver op een dataset van 513 JavaScript-pakketten, inclusief pakketten die nog nooit eerder zijn getypeerd. Met het beste typevoorspellingsmodel zien we dat slechts 21% van de pakketten de typecontrole doorstaat, maar wat bemoedigender is, is dat 69% van de bestanden de typecontrole met succes doorstaat.