Are Big Projects Ditching TypeScript?

“대형 프로젝트들이 TypeScript를 버리고 있는데… 왜?”라는 제목의 Fireship의 최근 비디오가 많은 관심을 받고 있습니다.

이제는 이런 질문을 정기적으로 받고 있을 정도입니다.

“대형 프로젝트에서 TypeScript를 대량으로 포기하는 것에 대해 어떻게 생각하시나요?”

저는 Fireship의 동영상에 부정확한 부분이 많다고 생각하며, 이 글에서 이를 바로잡고자 합니다.

Turbo 8이 TypeScript를 중단한 이유는 무엇인가요?

이 동영상은 DHH가 Turbo 8에서 TypeScript를 삭제한다는 발표를 한 후에 공개되었습니다.

Fireship의 영상은 이 사실을 정확히 짚어냈습니다. Turbo 8은 소스 코드와 컴파일된 출력에서 TypeScript를 완전히 삭제했습니다.

DHH는 소스 코드가 더 읽기 쉬워졌고, “이 논쟁은 누구의 근본적인 입장도 움직이지 않을 것 같은 논쟁 중 하나”이기 때문에 기여자들에게 자문을 구하지 않았다고 추론했습니다. 예상대로 Turbo에서 TypeScript를 제거하자는 PR은 Turbo의 사용자와 기여자 모두에게 인기가 없었습니다.

Fireship의 동영상은 마치 Turbo 사용자들이 여전히 TypeScript로 괜찮은 경험을 할 수 있을 것처럼 보였습니다. 이는 사실이 아닙니다. Turbo에서 타입 정의(TS 파일에서 자동으로 생성되는)를 제공하지 않기로 선택하면 TypeScript 파일로 가져올 때 더 이상 자동완성 및 타입 세이프티 기능을 사용할 수 없게 됩니다. Svelte의 창시자 Rich Harris는 이 동작을 “사용자를 적대시하는 멍청한 짓”이라고 불렀던 것이 기억에 남습니다.

Turbo는 여전히 사용자를 돕기 위해 이러한 타입 정의를 수동으로 작성하도록 선택할 수 있습니다. 하지만 이렇게 하려면 .d.ts 파일을 수동으로 생성하여 배포해야 합니다. 이러한 입장을 고려할 때 그럴 가능성은 낮아 보입니다.

Svelte가 TypeScript를 중단한 이유는 무엇인가요?

비디오는 또한 Svelte가 “더 이상 TypeScript를 사용하지 않는다”고 언급합니다. 그런 다음 Svelte가 “JSDoc을 사용하여 TypeScript의 대부분의 이점을 얻고 있다”고 설명합니다.

그의 말이 맞습니다! Svelte는 여전히 TypeScript를 사용하고 있습니다. — 단지 대부분의 프로젝트가 하는 방식과는 다릅니다.