הצעת ECMA תביא רשומות וכדורים ל- JavaScript

JavaScript יזכה לסוגי שיא וכפל ערך לפי הצעה בפני ECMA International, גוף הסטנדרטים המפקח על שפת התכנות הפופולרית לפיתוח אתרים.

רשומות ושולחנות יכניסו שני מבני נתונים בלתי ניתנים לשינוי ב- JavaScript:, Recordמבנה דמוי אובייקט ומבנה דמוי Tupleמערך. טיוטה של ​​התוכנית עם הוועדה הטכנית ECMA 39, המסדירה את ECMAScript, התקן העומד בבסיס JavaScript.

ההצעה קובעת כי רשומות ושתי כוסות יכולות להכיל רק פרימיטיבים ותיקים אחרים. ניתן לחשוב עליהם כ"פרימיטיבים מורכבים ". ועל ידי היותם מבוססים ביסודיות על פרימיטיבים, הם בלתי ניתנים לשינוי עמוק. בדומה לאובייקטים ומערכים, רשומות וכוסות תומכות בניבים נוחים לבנייה, שימוש ומניפולציה, נאמר בהצעה. הם מושווים על ידי תכנים ולא לפי זהות.

מנועי JavaScript עשויים לבצע אופטימיזציות מסוימות בבנייה, מניפולציה והשוואה בין רשומות וכדולים, בדומה לאופן יישום המיתרים. רשומות וכדורי כניסה נועדו להיות שמישים ומובנים עם מערכות-על של מערכת מסוג חיצוני כגון TypeScript או Flow.

נכון לעכשיו, ספריות ארץ משתמש כגון immutable.js מיישמות מושגים דומים. ההצעה קובעת כי הצעה קודמת של ECMA למבני נתונים בלתי ניתנים לשינוי ניסתה, אך ננטשה בגלל מורכבותה והיעדר מקרי שימוש מספקים. ההצעה החדשה מציגה שינויים משמעותיים, המציעה יתרונות שימושיות על פני ספריות משתמש הארץ כגון:

  • ניתן לחשוף בקלות על רשומות וכדורים באגים.
  • אין צורך בסניף נוסף בכדי לכתוב ספרייה כללית הצורכת אובייקטים בלתי ניתנים לשינוי ו- JS.
  • נמנעים ממקרי שימוש בהם מפתחים עשויים להמיר ביוקר בין אובייקטים רגילים של JS לבין מבנים בלתי ניתנים לשינוי.

רשומות וכדוליות משתפות פעולה היטב עם חפצים ומערכים. ניתן לקרוא אותם באותו אופן כמו חפצים ומערכים. ההבדל העיקרי מתמקד בחוסר שינוי עמוק והשוואה לפי ערך ולא זהות. כמו כן, את התחביר המוצע משפר באופן משמעותי את הארגונומיה של שימוש Recordו Tupleבקוד.

הגרסה האחרונה של מפרט ה- ECMAScript, גרסה 2020, אומצה ביוני. הוא הציג יכולות בתחומים כגון טעינת מודולים BigIntוסוג חדש .