Angular의 TypeScript 7 기반 컴파일러 업데이트
Angular 개발팀은 성능 향상과 네이티브 도구 활용을 위해 새로운 컴파일러인 "ngp"를 도입하고 있습니다. 수년간 Angular는 프레임워크 확장에 중요한 역할을 해온 TypeScript에 크게 의존해 왔습니다. 그러나 TypeScript 7과 같이 Go로 컴파일된 TypeScript 버전은 Angular의 깊이 통합된 컴파일러와 호환되지 않습니다. 이를 해결하기 위해 Angular는 컴파일 프로세스를 TypeScript의 컴파일러 API에서 분리하고 있습니다. 컴포넌트와 템플릿을 처리할 새로운 Angular 전용 컴파일러를 구축하고 있습니다. 이 새로운 컴파일러는 빌드 파이프라인에 적합한 변환된 TypeScript 코드를 출력할 것입니다. 많은 프레임워크들이 이제 코드 생성과 타입 검사를 분리하고 있으며, 종종 oxc 라이브러리를 사용합니다. Rust로 작성된 Oxc는 Vite와 같은 도구에 동력을 제공하는 JavaScript 파싱 및 컴파일을 위한 네이티브 툴체인입니다. 새로운 Angular Preprocessor, ngp는 네이티브 도구와 유사한 성능 이점을 달성하는 것을 목표로 합니다. Ngp는 Angular 데코레이터 컴파일과 템플릿 표현식 타입 검사 촉진이라는 두 가지 주요 작업을 수행합니다. 소스 파일당 두 개의 출력 파일을 생성합니다. 하나는 컴파일된 코드용이고 다른 하나는 타입 검사용입니다. 현재 ngp는 하이브리드 아키텍처로, 프론트엔드는 Rust를, 백엔드는 TypeScript를 사용합니다. Oxc로 구축된 Rust 프론트엔드는 코드를 파싱하고 Angular 구문을 식별합니다. TypeScript 백엔드는 컴파일 작업을 실행하고 출력을 생성합니다. Ngp는 최소 실행 가능 제품(Minimum Viable Product) 단계에 근접했으며, 올해 말에 실험 버전이 출시될 예정입니다. 초기 테스트는 고무적이지만, 전체 빌드 프로세스를 벤치마킹한 후에야 확실한 성능 비교가 가능할 것입니다. 새로운 컴파일러는 Angular 언어 서비스를 지원하기 위한 프로토타입도 제작 중입니다. 타입 검사 동작과 관련된 사소한 호환성 변경이 있을 수 있습니다. 팀은 강력한 JavaScript/TypeScript 툴체인 라이브러리의 가용성 때문에 Go 대신 Rust와 oxc를 선택했습니다.