שימוש במערכים אסוציאטיביים

TypeScript:
שימוש במערכים אסוציאטיביים

איך לעשות:

יצירה ושימוש במערכי שיוך ב-TypeScript היא תהליך ישיר. הנה סקירה בסיסית:

// הצהרה על מערך שיוך
let user: { [key: string]: string } = {};

// הוספת נתונים
user["name"] = "Jane Doe";
user["email"] = "[email protected]";

console.log(user);

פלט:

{ name: 'Jane Doe', email: '[email protected]' }

לדרוך על זוגות מפתח-ערך גם כן קל:

for (let key in user) {
    console.log(key + ": " + user[key]);
}

פלט:

name: Jane Doe
email: jane@example.com

ואם אתם מתמודדים עם סוגי נתונים מעורבים, מערכת הטיפוסים של TypeScript מתגלה כשימושית:

let mixedTypes: { [key: string]: string | number } = {};
mixedTypes["name"] = "John Doe";
mixedTypes["age"] = 30;

console.log(mixedTypes);

פלט:

{ name: 'John Doe', age: 30 }

צלילה עמוקה

ב-TypeScript, מה שאנו מתייחסים אליו כמערכי שיוך הם למעשה אובייקטים. מבחינה היסטורית, בשפות כמו PHP, מערכי שיוך הם סוג בסיסי, אך JavaScript (ובהרחבה, TypeScript) משתמשת באובייקטים למטרה זו. גישה זו היא גם חוזק וגם הגבלה. אובייקטים מספקים מבנה דינמי ביותר לשיוך מחרוזות לערכים, אך הם אינם מיועדים לשימוש כמערכים במובן המסורתי. לדוגמה, לא ניתן להשתמש בשיטות מערך כמו push או pop ישירות על אובייקטים אלו.

למקרים בהם יש צורך באוספים מסודרים של זוגות מפתח-ערך עם פעולות דמויות מערך, TypeScript (וה-JavaScript המודרני) מציעה את האובייקט Map:

let userMap = new Map<string, string>();
userMap.set("name", "Jane Doe");
userMap.set("email", "[email protected]");

userMap.forEach((value, key) => {
    console.log(key + ": " + value);
});

תוך כדי שמערכת הטיפוסים של TypeScript ותכונות ES6 כמו Map מספקות חלופות עוצמתיות, הבנה של כיצד להשתמש באובייקטים כמערכי שיוך שימושית לתרחישים שבהם אובייקטים ליטרליים הם יעילים יותר או כאשר עובדים עם מבני נתונים של JSON. הכול עניין של בחירה בכלי הנכון למשימה.