데브허브 | DEVHUB | Arrays, objects... now ‘composites’?Arrays, objects... now ‘composites’?
- JavaScript 객체는 참조로 비교되어 Map 키로 사용할 때 예상치 못한 동작을 유발하는 고질적인 문제가 있습니다. 🤯
- 기존의 해결책인
JSON.stringify는 속성 순서에 민감하여 불안정하며 완벽하지 않습니다. 🚧
- 'Records and Tuples' 제안은 값 비교를 통해 이 문제를 해결하려 했으나,
# 문법과 불변성을 강제했습니다. 🔒
- 'Records and Tuples'는 원시 값이나 다른 레코드/튜플만 포함할 수 있어 유연성이 떨어졌습니다. 🚫
- 레코드 생성 시 내용 유효성 검사로 인해 일반 객체보다 성능 저하가 발생할 수 있었고, 오용 시 "발등 찍는" 문제가 우려되어 철회되었습니다. 📉
- 새로운 'Composites' 제안은 동일한 문제를 해결하기 위해 함수 호출
Composite() 방식을 사용합니다. 🆕
- 'Composites'는 어떤 값이든 포함할 수 있어 'Records and Tuples'보다 훨씬 유연합니다. 🌈
- 'Composites'는 생성 시 유효성 검사가 없어 일반 객체와 유사한 성능을 가지며,
JSON.stringify를 피하여 Map 키 사용 시 이점을 제공합니다. 🚀
- 'Composites' 제안은 아직 초기 단계(Stage 1)이며,
=== 연산자의 동작 방식 등 여러 부분이 논의 중이고 변경될 수 있습니다. 🗣️
- 'Composites'는 'Records and Tuples'의 실패에서 얻은 교훈을 바탕으로 재탄생한 것으로, 이름과 세부 사항은 유동적입니다. 💡