이 사이트의 콘텐츠는 인공지능(AI) 또는 기계 번역 기술을 사용하여 번역되었으며 오류가 있을 수 있습니다.

Skip to content
Programming Languages
Artificial Intelligence

머신러닝 모델은 타입 검사가 가능한 TypeScript 타입을 생성하는가?

Author

Ming-Ho Yee (노스이스턴 대학교) 및 Arjun Guha (노스이스턴 대학교 및 Roblox)

Venue

2023년 유럽 객체 지향 프로그래밍 컨퍼런스(ECOOP)

Abstract

타입 마이그레이션은 컴파일 시점에 확실성을 확보하기 위해 타입이 지정되지 않은 코드에 타입을 추가하는 과정입니다. TypeScript 및 기타 점진적 타입 시스템은 프로그래머가 불명확한 타입으로 시작하여 점차 이를 강화할 수 있도록 함으로써 타입 마이그레이션을 용이하게 합니다. 그러나 타입 추가 작업은 수작업이 필요하며, 대규모 산업용 코드베이스에서 수행된 여러 마이그레이션 사례가 수년이 소요된 것으로 보고되었습니다. 연구계에서는 머신러닝을 활용하여 TypeScript 타입 마이그레이션을 자동화하는 데 큰 관심을 보여왔습니다. 기존 머신러닝 모델들은 개별 TypeScript 타입 주석을 예측하는 데 있어 높은 정확도를 보고하고 있습니다. 그러나 본 논문에서는 이러한 정확도가 오해를 불러일으킬 수 있으며, 우리는 다른 질문을 다뤄야 한다고 주장합니다. 즉, 자동 타입 마이그레이션 도구가 TypeScript 타입 검사기를 통과하는 코드를 생성할 수 있는가 하는 것입니다. 우리는 임의의 타입 예측 모델과 함께 사용할 수 있는 TypeScript 타입 마이그레이션 도구인 TypeWeaver를 제시합니다. 우리는 문헌에 소개된 세 가지 모델, 즉 재귀 신경망인 DeepTyper, 그래프 신경망인 LambdaNet, 그리고 중간 채우기(fill-in-the-middle) 작업을 지원하는 범용 다중 언어 트랜스포머인 InCoder를 사용하여 TypeWeaver를 평가합니다. 본 도구는 타입 예측 모델을 사용하는 데 필요한 여러 단계를 자동화합니다. (1) 프로젝트 의존성에 대한 타입 가져오기; (2) JavaScript 모듈을 TypeScript 표기법으로 마이그레이션; (3) 필요할 때 예측된 타입 주석을 프로그램에 삽입하여 TypeScript를 생성하는 것; 그리고 (4) 필요할 때 타입이 아닌 예측을 거부하는 것입니다. 우리는 이전에 타입이 지정된 적이 없는 패키지를 포함하여 총 513개의 JavaScript 패키지로 구성된 데이터셋을 사용하여 TypeWeaver를 평가했습니다. 최상의 타입 예측 모델을 사용했을 때, 패키지의 21%만이 타입 검사를 통과했지만, 더 고무적인 점은 파일의 69%가 타입 검사를 성공적으로 통과했다는 것입니다.