תחי ישראל - אין לנו ארץ אחרת

תחי ישראל -אין לנו ארץ אחרת

סוגי משתנים בסיסיים ב-typescript

מחבר:
בתאריך:

מדריך זה הוא המדריך הרביעי בסדרת המדריכים בנושא Typescript. המדריכים הקודמים בסידרה הם:

 

typescript, כפי שמעיד השם, מצויד באפשרות להגדיר את סוג המשתנים (types) שמשמשים בקוד. במדריך זה נכיר שתי דרכים עיקריות להגדיר את סוג המשתנים, ונלמד מה כדאי לעשות, וממה עדיף להימנע כשמכריזים על משתנים.

 

דרך ראשונה: הגדרת סוג המשתנה בשורה שבה מכריזים על המשתנה

הדרך הראשונה להגדיר את סוג המשתנה היא כבר באותה השורה שבה אנו מכריזים על המשתנה.

לדוגמה, נכתוב את הקוד הבא בקובץ ששמו types.ts:

let myNumber : number;
myNumber = 42;

בשורה הראשונה, הגדרנו שהמשתנה myNumber שייך לסוג number, ולכן יכול לקבל ערכים מספריים בלבד ( קראו על יתרונות השימוש ב-let במקום ב-var כשמכריזים על משתנים ).
ובשורה השנייה הצבנו את ערכו של המשתנה (42).

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

let myNumber : number;
myNumber = "forty two";

נקמפל את הקובץ על ידי הרצת הפקודה הבאה על הקובץ types.ts, שבתוכו כתבנו את הקוד, בשורת הפקודות או בטרמינל ( קראו כיצד לעשות קומפילציה של typescript ):

> tsc types.ts

הקומפיילר ייתן לנו הודעת שגיאה. לדוגמה:

> types.ts(2,1): error TS2322: Type "forty two" is not assignable to type 'number'.

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

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

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

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

ועכשיו, נכיר את הדרך השנייה לקבוע את סוג המשתנה.

 

דרך שנייה: הצבת ערך למשתנה מיד כשמכריזים עליו

הדרך השנייה להגדיר את סוג המשתנה היא על ידי הצבת ערך למשתנה כבר בשורה הראשונה שבה מכריזים על המשתנה.

לדוגמה:

let myNumber = 42;

ועכשיו, אם ננסה להציב ערך שאינו מספר, הקומפיילר של typescript יראה שגיאה.

let myNumber = 42;
myNumber = "forty two";

כך נראית השגיאה בהרצה שעשיתי על המחשב אצלי.

> types.ts(2,1): error TS2322: Type "forty two" is not assignable to type 'number'.

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

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

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

לדוגמה:

let myNumber: number = 42;

 

ומה יקרה אם לא נקפיד להגדיר את סוג המשתנים? או ממה כדאי להימנע?

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

לדוגמה, הקוד הבא הוא typescript תקין לגמרי, אבל אינו מומלץ בעליל.

let myNumber;
myNumber = 42;
myNumber = "forty two";

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

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

כלומר, הקוד שראינו לפני רגע, נקרא על ידי typescript באופן הבא:

let myNumber: any;
myNumber = 42;
myNumber = "forty two";

זה כמובן מפספס את הפואנטה של שימוש ב-typescript כדי למנוע הצבת סוג לא נכון של ערכים, ולכן נשתדל לצמצם את השימוש בסוג any (שמאפשר הצבת כל סוג של ערכים) עד כמה שאפשר.

 

אילו סוגים בסיסיים קיימים ב- Typescript?

הסוג מחרוזת (string)

let myString: string = "this is a string";

הסוג מספר (number)

let myNumber: number = 42;

הסוג boolean

let myBoolean: boolean = true;

הסוג any (שמאפשר הצבה של כל סוגי הערכים).

let anything: any;

 

זהו, עד פה סוגי משתנים בסיסיים ב-typescript.

במדריך הבא נלמד את הנושא של מערכים ב- typescript, כיצד להכריז עליהם, ועל פונקציות מועילות לטיפול במערכים

להתראות!

 

לכל מדריכי ה-TypeScript

 

אהבתם? לא אהבתם? דרגו!

0 הצבעות, ממוצע 0 מתוך 5 כוכבים

 

 

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

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

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

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

השימוש שלך באתר מהווה ראייה להסכמתך עם הכללים והתקנות שנוסחו בהסכם תנאי השימוש.

הוסף תגובה חדשה

 

 

ענה על השאלה הפשוטה הבאה כתנאי להוספת תגובה:

איך אומרים בעברית אינטרנט?