
static שייכים למחלקה עצמה ולא לאובייקטים שנוצרים ממנה. ההרצאה מדגימה משתנה סטטי ופונקציה סטטית.Shape אפשר להגדיר shapesFileName מסוג string. בלי static לכל אחת מאלף צורות יהיה עותק משלה. עם static יש ערך אחד משותף לכל הצורות.Shape.shapesFileName, גם לפני שנוצר אובייקט כלשהו. האובייקטים עצמם לא רואים אותו. בדוגמה הושם בו הערך allshapes.txt והודפס.Metric, ובה פונקציה random שמקבלת מינימום ומקסימום ומחזירה מספר שלם בטווח, כולל הקצוות. היא מחושבת עם Math.floor ו-Math.random.static היה צריך ליצור אובייקט מיותר רק כדי לקרוא לה.Metric.random(100, 200) החזירה מספרים בין 100 ל-200, כמו 147, ובכל רענון הערך השתנה.הטקסט המלא של הדקות הראשונות בהרצאה «משתנה סטטי ב-TypeScript» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
הדבר הבא שאנחנו הולכים לראות בטייפסקריפט זה איך לייצר משתנים סטטיים ופונקציות סטטיות. הכוונה משתנה או פונקציה שהם לא שייכים לאובייקט מהקלאס אלא נמצאים בקלאס שייכים לוגית לקונספט של הקלאס אבל לא לאובייקטים ממנה וניתנים לגישה על ידי שם הקלאס אז בוא נניח שאנחנו רוצים שיהיה לנו
איזשהו שם קובץ כזה שאנחנו נוכל לשמור בתוכו את כל הצורות שאנחנו מייצרים אז אני נמצא במחלקה שייפ ואני יוצר פה למעלה איזשהו פאבליק בואו נקרא לזה שייפס פייל ניים והסוג שלו זה סטרינג.
אם אני מגדיר אותו בצורה כזאת אז הוא שייך לכל אובייקט שייווצר מהקלאס. אם יש לי אלף צורות אז לכל אחד יהיה משתנה שנקרא שייפס פייל ניים אבל אני רוצה שם קובץ אחד עבור כל הצורות פשוט סטטיק.
שם פה את המילה static ויש לנו כרגע את היכולת לבנות או להכיל בתוכו ערך שהוא משותף לכל הצורות. איך אני מכניס לתוכו ערך ואיך אני קורא ממנו?
בואו ניגש לכאן, שימו לב שאני נמצא אפילו פה לפני שיצרתי בכלל אובייקט צורה כלשהי, shape.shapes.fileName שווה נקרא לזה allshapes.txt ובואו ניגש לפה אפילו בסוף, נעשה פה איזה document-right hr כזה ומיד אחר כך document-right shapes-fine-name,
נשרשר, אם אני משרשר אז כבר עדיף לי interpolation ויש לנו פה את shapes.shape-fine-name בואו נעשה פה איזה בר וברגע שאתם רוצים לגשת למשתנה סטטי על ידי שם הקלאס הוא לא נגיש על ידי אובייקטים, שימו לב שאני לא רואה פה את המשתנה ובואו נריץ.
אז הנה יש לנו shapes.fineName all shapes.txt האמת שזה אני לא צריך, אני רואה shapes.fineName הכל עובד כמו שצריך, זה היה משתנה סטטי שייך לקלאס, לא שייך לאובייקטים מהקלאס.
מה קוראים אנחנו רוצים? פונקציה סטטית. בואו נייצר כאן מחלקה חדשה, אני אקרא לה מטריקה.
נקודת s והיא מתעסקת עם מספרים בשיטה המטריק, הופה, אני רואה שלא יצרתי קלאס, יצרתי בטעות תיקייה, מה שרציתי זה מטריק נקודת s והנה יש לנו קלאס מטריק.
ומה שאנחנו רוצים בקלאס המטריק זה פונקציה שבייסיקלי נקראת גט, בוא נקרא לה רנדום, היא מחזירה מספר רנדומלי כלשהו, היא תקבל ערך מינימלי ערך מקסימלי ותחזיר לנו מספר רנדומלי בטווח הזה כולל קצוות.
אז אנחנו נוכל לפנות אליה ולהגיד לה אני רוצה מספר רנדומלי בטווח הזה תביא לי בבקשה את המספר הזה. אז בואו נחזיר את math.flor math.random כפול Max פחות מין ועוד אחד וכל זה ועוד המינימום.
והנה יש לנו כרגע פונקציה, אפשר את המינימום להכניס כאן שאם ישלחו לי בוא נניח מספר עשורני אני גם אותו אעגל, היא מחזירה לי מספר שלם. למה הפונקציה הזאת צריכה להיות סטטית?
מפני שהיא לא מתעסקת עם שום דבר שהוא לא סטטי ברמת הקלאס. אז בכדי לקרוא לה אני את אצטרך לבנות אובייקט מיותר מהמחלקה מטריק בכדי לקרוא לה פונקציה.
אם היא לא סטטית אני מחויב לקרוא לה על ידי אובייקט, אני לא רוצה לבנות אובייקט ולקרוא לה פונקציה, אני רוצה לקרוא לה בלי שום יצירת אובייקט ולכן אנחנו הופכים אותה לסטטית.
עכשיו אנחנו יכולים לגשת, בואו נבדוק אותה במיין ונדפיס פה some random number ויש לנו, עוד פעם אני שוכח כל פעם שכדאי לי לעבוד עם interpolation ואנחנו רוצים לקרוא למטריק נקודה רנדום תן לי מספר בין 100 ל-200 ולא