PracticU

מחלקה Generic ב-TypeScript

בלי כתוביותעם כתוביות
PracticU › קורס TypeScript › מחלקה Generic ב-TypeScript
מילון מושגים:
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
TypeScript - שפת תכנות המרחיבה את JavaScript בהוספת טיפוסים, ומתקמפלת ל-JavaScript רגיל.
משתנה - שם שמפנה למקום בזיכרון שבו נשמר ערך שיכול להשתנות במהלך ריצת התוכנית, כמו מספר, טקסט או אובייקט.
אובייקט - יחידה בתכנות מונחה עצמים שמאגדת נתונים (תכונות) ופעולות (מתודות). נוצר בדרך כלל ממחלקה המשמשת כתבנית.
מחרוזת - סוג נתונים שמייצג רצף של תווים, כלומר טקסט, ומשמש לאחסון מילים, משפטים או כל רצף סימנים.
פרמטר - ערך שמועבר לפונקציה או לפקודה כקלט, ומשפיע על אופן פעולתן ועל התוצאה שהן מחזירות.
בוליאני - סוג נתונים שיכול לקבל אחד משני ערכים בלבד: אמת (true) או שקר (false).
מתודה - פונקציה המוגדרת בתוך מחלקה ומתארת פעולה שאובייקטים מאותה מחלקה יכולים לבצע.

מחלקה Generic ב-TypeScript
מחלקה ג'נרית מכילה משתנים שהטיפוס שלהם לא נקבע בכתיבתה, ומי שיוצר את האובייקט הוא שמחליט עליו. ההרצאה מדגימה זאת על מחלקה שמתארת הודעת SMS.
מחלקה שאינה ג'נרית
1. נקודת פתיחה: המחלקה SMS מקבלת message ו-phone מסוג string, ויש לה מתודת send שמציגה למי נשלחת ההודעה. מאחר שההודעה היא string, אי אפשר לשלוח מספר כמו 120 אלא להמיר אותו, ובעתיד גם תמונה תהיה בעיה.
הופכים אותה לג'נרית
2. פרמטר טיפוס: מוסיפים בסוגריים משולשים שם טיפוס, TMessage, ומשתמשים בו בכל מקום שבו היה string עבור ההודעה.
3. הסקה: יצירת אובייקט עם "hello" נחשבת string, ועם 120 נחשבת number.
4. טיפוס מפורש: new SMS<boolean> מחייב ערך בוליאני, ושליחת מחרוזת גורמת לשגיאה.
5. פונקציה ג'נרית: גם פונקציה, או מתודה, יכולה להגדיר טיפוס T עבור value. ללא ציון הטיפוס העורך מסיק אותו מהקריאה, למשל string מתוך "this is a string".
6. כמה טיפוסים: מחלקה יכולה לקבל כמה פרמטרי טיפוס מופרדים בפסיק. בדוגמה נוסף TSubject לפני TMessage, ובקריאה אפשר לשלוח נושא "greetings" או 123 עם הודעה כמו true.
7. הצהרה על משתנה: ב-sms4 מוגדר הסוג כ-SMS<number, boolean> ונוצר אובייקט מאותו סוג.
שימו לב
כשמציינים את הטיפוס במפורש חובה לשלוח אותו. כשלא מציינים, הוא נקבע מהערך שנשלח.
עכשיו אפשר לכתוב מחלקות ופונקציות ג'נריות עם טיפוס אחד או כמה.
השיעור הבא בקורס: יצירת enum ב-TypeScript

פרקי ההרצאה: מחלקה Generic ב-TypeScript

  1. 00:00

    מהי מחלקה Generic

  2. 00:57

    קונסטרקטור ופונקציית send במחלקת SMS

  3. 02:03

    יצירת אובייקט ושליחת הודעה

  4. 02:51

    המגבלה של הודעה מסוג string

  5. 03:28

    הגדרת טיפוס גנרי TMessage

  6. 04:33

    ציון הטיפוס בסוגריים משולשים

תמלול ההרצאה: מחלקה Generic ב-TypeScript

הטקסט המלא של הדקות הראשונות בהרצאה «מחלקה Generic ב-TypeScript» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

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

  2. 00:25

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

  3. 00:46

    לאס-אם-אס אנחנו יודעים שיש איזושהי הודעה מסאג' ולאס-אם-אס יש טלפון אליו אני רוצה לשלוח את ההודעה. בואו נניח שהאס-אם-אס הזה שולח לטלפון אחד ולא לקבוצה של טלפונים ובואו נייצר לעצמנו פה איזשהו קונסטרקטור ובקונסטרקטור אנחנו רוצים לקבל את המסאג'

  4. 01:17

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

  5. 01:53

    נדפיס פה את הטלפון עצמו דיס נקודה פאון בצורה כזאת עדיין זה לא שום דבר שקשור לג'נריות נשים את זה פה בצד פונסט אס.אם.אס u sms ניתן לו הלו ל-0521234567 sms1.send ואנחנו רוצים לראות מה יש לנו על הדף אין לנו כלום אנחנו צריכים לגשת לפה פל ולהגדיר כאן sms.js והנה סנדינג הלו טו בלה בלה עד

  6. 02:45

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

  7. 03:14

    מה, אני כבר לא יהפוך למכרוזת או כל טיפוס נתונים אחר? אז אנחנו יכולים להגדיר את המחלקה הזאת sms כמחלקת ג'נרית. זה אומר שהמסאג' לא מוגדר כסטרינג בזמן הבנייה של המחלקה, אלא אנחנו מגדירים כאן איזשהו טיפוס חדש.

  8. 03:35

    נהוג לקרוא לו t, אבל t זה קצת חסר משמעות, אז אני אקרא לו t-message, t הקיצור של טייפ מסאג' בצורה כזאת, ועכשיו t-message הופך להיות טיפוס נתונים שאני יכול להשתמש איתו במקום סטרינג בכל מקום עבור המסאג'.

  9. 03:56

    אז בואו נגדיר שהמסאג' הוא מטיפוס T-Message גם כאן וגם כאן ועכשיו לא הגדרנו מה סוג הנתונים של ה-SMS. עכשיו כאן פתאום אני רואה שאין לי שום שגיאה אני רואה ש-hello מבחינתו זה סטרינג ו-120 מבחינתו זה number אם אנחנו נריץ את זה כרגע אנחנו נראה סנדינג אלואו טו מספר טלפון סנדינג 120 טו מספר טלפון בואו נבצע עוד אחד ונגיד יש לנו

  10. 04:33

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

  11. 04:59

    בואו נכניס פה אותו מספר טלפון, 052-1234567 ושימו לב שיש לי פה שגיאה, תן לי ערך בולעני כמו true לדוגמה ואז אני אוכל לשלוח לך את זה. נוריד רגע את הגופן, בואו נבדוק רגע ונראה שהוא שולח את המילה

לקורס המלא: קורס TypeScript אונליין

ההרצאה הקודמת: פולימורפיזם ב-TypeScript

ההרצאה הבאה: יצירת enum ב-TypeScript

הרצאות קשורות מקורסים אחרים

  • Typescript
  • מחלקה sealed
  • מחלקה אבסטרקטית ב-NodeJS
  • יצירת מחלקה עם כל ההגדרות - Config Class - חלק 1

קורסים נוספים במסלול

  • קורס יסודות HTML - בניית אתר אינטרנט פשוט
  • קורס CSS 3 - בדגש על Flex & Grid
  • קורס Javascript כולל JQuery
  • קורס ג'אווה סקריפט מעשי - JavaScript
  • קורס ריאקט - React
  • קורס NodeJS