הצהרות טיפוס
חלק מהיחידה מבוא ל-Luau במסלול ה-Lua של Coddy. שיעור 74 מתוך 80.
כבר השתמשת פעם אחת ב־::, בפרק על טיפוסי enum, כדי להתייחס אל io.read() כאל Direction. בשיעור הזה נבחן אותו לעומק.
לפעמים יש לך יותר מידע על ערך מאשר לבודק הטיפוסים של Luau: למשל, ערך שהטיפוס שלו הוא any, אבל ידוע לך שהוא למעשה רשומת משתמש. הצהרת טיפוס (שנקראת גם המרת טיפוס) מאפשרת לך לומר לבודק: "סמוך עליי, התייחס לערך הזה כאל טיפוס זה". אופרטור ההמרה של Luau הוא :::
type User = {id: number, username: string}
local raw: any = {id = 42, username = "alice_dev"}
local user = raw :: User
print(user.username) -- בודק הטיפוסים מכיר עכשיו את השדותהמרת טיפוס משנה רק את מה שבודק הטיפוסים מאמין. היא לא עושה דבר בזמן הריצה. היא לעולם לא ממירה ערך: "5" :: any הוא עדיין המחרוזת "5", ולא המספר 5 (להמרה ממשית, השתמש ב־tonumber). והיא לעולם לא מאמתת: אם תצהיר על טיפוס שגוי, ההמרה עצמה לא תגרום לשגיאה. הקוד שלך פשוט יתנהג באופן שגוי בהמשך, כשייגש לשדות שאינם קיימים.
מתי להשתמש בזה: כשערך מתקבל כ־any (או כאיחוד רחב), ואתה יודע בוודאות מה המבנה שלו. מתי לא להשתמש בזה: כדי להשתיק שגיאת טיפוסים שאינך מבין: בדרך כלל השגיאה מצביעה על באג אמיתי, והסרתה באמצעות המרה רק מסתירה אותו. העדף בדיקות ממשיות (כמו בדיקות typeof בשיעור הבא) כשאפשר לאמת בזמן הריצה.
אתגר
קלקרא רשומה שמגיעה מטיפוס any.
- כתוב
type User = {id: number, username: string, isActive: boolean}. - כתוב
local function describeUser(data: any): stringשמבצעת המרה באמצעותlocal user = data :: Userומחזירה את`User {user.id}: {user.username} (Active: {user.isActive})`. - הדפס את
describeUser(rawUser2).
לחץ על הרצת הקוד: הפלט מציג את User 15: bob_admin (Active: false).
נסו בעצמכם
-- רשומות גולמיות מחוץ לתוכנית: מטיפוס any
local rawUser1: any = {id = 7, username = "nina_dev", isActive = true}
local rawUser2: any = {id = 15, username = "bob_admin", isActive = false}
-- 1) type User = {...}
-- 2) describeUser(data: any): string, המרת טיפוס באמצעות ::
-- 3) הדפיסו את describeUser(rawUser2)
כל השיעורים ביחידה מבוא ל-Luau
1תחילת העבודה עם Luau
מהו Luau?למה להשתמש ב-Luau?קוד Luau הראשון שלכםבדיקת טיפוסים ומצבי שגיאהסיכום: מבוא ל-Luau4עבודה עם פונקציות
הגדרת טיפוסים לפרמטרים ולערכי החזרההגדרת טיפוסים לפונקציות אנונימיותפונקציות שאינן מחזירות ערךפרמטרים אופציונלייםערכי ברירת מחדל לפרמטריםערכי ברירת מחדל לבוליאניםפונקציות עם מספר משתנה של ארגומנטיםהגדרת טיפוסי פונקציותסיכום: פונקציות עם טיפוסים2טיפוסי ליבה
מספר, מחרוזת ובוליאניהטיפוס 'any': פתרון מילוטהטיפוס 'unknown'טיפוסי Nil ואופציונלייםהסקת טיפוסים בפעולההצהרות טיפוס מפורשותסיכום: תרגול בטיפוסי ליבה5כינויים, איחודים וחיתוכים
כינויים לסוגים פרימיטיבייםטיפוסי איחודעבודה עם טיפוסי איחודטיפוסים ליטרלייםטיפוסי חיתוךשילוב כינויים לסוגיםסיכום: שילובים מתקדמים של טיפוסים3טבלאות מטיפוס מוגדר: מערכים ומפות
מערכים מטיפוס מוגדרהוספה וקריאה של איבריםמהו טיפוס Map?הגדרה וגישה למפותמעבר על טבלאותטבלאות במבנים מעורביםקריאת רשתבניית רשתtable.unpackסיכום: מערכים ומפותתרגלו בעצמכם: קומפיילר Luau אונליין