Types vs Interfaces: What I Got Wrong In 2022
- 2022년의 Matt는 TypeScript 성능 위키의 내용을 잘못 이해하고 인터페이스와 타입의 성능 차이에 대해 잘못된 주장을 했습니다. 🤦♂️
- 인터페이스의
extends
는 타입의 intersection보다 컴파일 속도가 더 빠르며, 특히 계층적 관계에서 성능 차이가 두드러집니다. 🚀
- 인터페이스는 선언 병합(declaration merging)이라는 특징이 있어 때로는 예상치 못한 문제를 일으킬 수 있지만, ESLint 규칙으로 어느 정도 해결 가능합니다. 🧩
- 타입 별칭은 암시적 인덱스 시그니처를 가지기 때문에 특정 상황에서 인터페이스와 다르게 동작하며, 이는 때때로 문제를 야기할 수 있습니다. 🕳️
- 과거에는 타입을 기본으로 사용하고 인터페이스의 특정 기능이 필요할 때만 인터페이스를 사용하라고 권장했지만, 이제는 인터페이스를 기본으로 사용하고 타입의 특정 기능이 필요할 때만 타입을 사용하는 것으로 추천을 변경했습니다. 🔄
- TypeScript의 성능이 향상되더라도 여전히 타입 성능에 신경 써야 하며, 인터페이스의
extends
를 사용하여 intersection 사용을 최소화하는 것이 중요합니다. 💡
- 결론적으로, 타입과 인터페이스 중 무엇을 사용할지는 크게 중요하지 않지만, 인터페이스의
extends
를 기본으로 사용하고 intersection을 피하는 것이 TypeScript 성능을 유지하는 데 도움이 됩니다. ✅