הצהרות טיפוס
חלק מהיחידה מבוא ל-Luau במסלול ה-Lua של Coddy. שיעור 68 מתוך 73.
לפעמים ידוע לך יותר על ערך ממה שבודק הטיפוסים של 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 בשיעור הבא) כשאתה יכול לאמת בזמן ריצה.
אתגר
קלדמה עיבוד של רשומות שמגיעות ממקור חיצוני ללא מידע על טיפוסים.
- הצהר על
type User = {id: number, username: string, isActive: boolean}. - כתוב פונקציה
describeUser(data: any): stringשמבצעת המרה שלdataל־Userבאמצעות::ומחזירהUser [id]: [username] (Active: [isActive])שנבנה באמצעות אינטרפולציה של מחרוזת.
קוד הפתיחה כבר מגדיר שלוש רשומות גולמיות מטיפוס any. קרא ל־describeUser עבור כל אחת מהן והדפס את שלוש התוצאות, לפי הסדר.
השורה הראשונה הצפויה: User 42: alice_dev (Active: true)
נסו בעצמכם
-- רשומות גולמיות ממקור חיצוני: מוגדרות עם הטיפוס `any`
local rawUser1: any = {id = 42, username = "alice_dev", isActive = true}
local rawUser2: any = {id = 15, username = "bob_admin", isActive = false}
local rawUser3: any = {id = 99, username = "charlie_user", isActive = true}
-- כתבו כאן קוד
-- 1) הגדירו את הטיפוס User
-- 2) describeUser(data: any): string — בצעו המרת טיפוס באמצעות :: ובנו את ההודעה
-- 3) הדפיסו את התיאור של כל שלוש הרשומות
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה מבוא ל-Luau
1תחילת העבודה עם Luau
מהו Luau?למה להשתמש ב-Luau?קוד Luau הראשון שלכםבדיקת טיפוסים ומצבי שגיאהסיכום: מבוא ל-Luau4עבודה עם פונקציות
הגדרת טיפוסים לפרמטרים ולערכי החזרההגדרת טיפוסים לפונקציות אנונימיותפונקציות שאינן מחזירות ערךפרמטרים אופציונלייםערכי ברירת מחדל לפרמטריםפונקציות עם מספר משתנה של ארגומנטיםהגדרת טיפוסי פונקציותסיכום: פונקציות עם טיפוסים2טיפוסי ליבה
טיפוסים בסיסיים: num, str, boolהטיפוס 'any': פתרון מילוטהטיפוס 'unknown'טיפוסי Nil ואופציונלייםהסקת טיפוסים בפעולההצהרות טיפוסים מפורשותסיכום: תרגול טיפוסי ליבה5כינויים, איחודים וחיתוכים
כינויים לסוגים פרימיטיבייםטיפוסי איחודעבודה עם טיפוסי איחודטיפוסים ליטרלייםטיפוסי חיתוךשילוב כינויים לסוגיםסיכום: שילובים מתקדמים של טיפוסים8Enums בדרך של Luau
תבנית ה-Enum ב-LuauEnums מספריים באמצעות טבלאותEnums של מחרוזות כאיחודיםשימוש ב-Enums של איחודי ערכים מילולייםהקפאת טבלאות קבועותסיכום: Enums בדרך של Luau11נושאים מתקדמים
הצהרות טיפוסשומרי טיפוס עם typeofהטיפוס neverבטיחות nil במצב strictחתימות אינדקססיכום: כוונון עדין של טיפוסים3טבלאות מטיפוס מוגדר: מערכים ומפות
מערכים מטיפוס מוגדרהוספת איברים וקריאתםמהו טיפוס Map?הצהרה על מפות וגישה אליהןמעבר על טבלאותטבלאות בעלות מבנים מעורביםמערכים רב־ממדיים מטיפוס מוגדרtable.unpack ו־Varargsסיכום: מערכים ומפותתרגלו בעצמכם: קומפיילר Luau אונליין