TypeScript

שפת תכנות

TypeScript היא שפת תכנות מבוססת קוד פתוח המפותחת ומתוחזקת על ידי מיקרוסופט. השפה היא ערכת-על (superset) תחבירית מוקפדת של JavaScript הפופולרית ומוסיפה עליה טיפוסיות סטטית אופציונאלית והרחבות לתכנות מונחה עצמים. TypeScript תוכננה לפיתוח מערכות גדולות ומורכבות ועוברת טרנס-קומפילציה[1] (או טרנספילציה, בקצרה) ל-JavaScript. בהיותה TypeScript ערכת-על של JavaScript, כל קוד JavaScript הוא קוד תקין ב-TypeScript.

TypeScript
TypeScript Logo (Blue).svg
פרדיגמות תכנות פונקציונלי, תכנות גנרי, תכנות אימפרטיבי, תכנות מונחה-עצמים עריכת הנתון בוויקינתונים
שנה 2012
מתכנן מיקרוסופט עריכת הנתון בוויקינתונים
מפתח מיקרוסופט עריכת הנתון בוויקינתונים
גרסה אחרונה 4.0.3 (19 בספטמבר 2020)
טיפוסיות "ברווז", הדרגתי, מבני
הושפעה על ידי JavaScript, סי שארפ, ג'בה, CoffeeScript עריכת הנתון בוויקינתונים
השפיעה על AtScript, AssemblyScript
רישיון אפאצ'י 2
סיומת ts, tsx
www.typescriptlang.org
לעריכה בוויקינתונים שמשמש מקור לחלק מהמידע בתבנית OOjs UI icon info big.svg

מאז השקתה חוותה הצלחה רבה בעיקר עקב היכולת לכתוב אפליקציות מורכבות על בסיס JavaScript.[2] אנדרס הלסברג, מהארכיטקטים הראשיים של #C ויוצר Delphi ו-Turbo Pascal, משתתף בפיתוח של TypeScript.

השפה תומכת בקובצי מטא-דטה דוגמת קובצי "Header" של C/C++ הנקראים קובצי הצהרה (declaration) שסיומתם "d.ts‏." אשר מנגישים מידע אודות הטיפוסים בספריות JavaScript. קבצים אלו משומשים לתיאור טיפוסי ה-TypeScript המיוצאים מספריות JavaScript כאשר מפתח צורך אותן. קיימים קובצי הצהרה צד שלישי עבור ספריות פופולריות כגון jQuery, MongoDB ,D3.js והמודולים המובנים של Node.js.

קובצי TypeScript מזוהים על ידי הסיומת "ts‏.". דפדפנים לא תומכים בקבצים מסוג ts, ולכן נדרש תהליך טרנס-קומפילציה כדי להפוך אותם לקובצי js הנתמכים בדפדפנים.

TypeScript משוחררת תחת הרישיון אפאצ'י 2.

נכון לספטמבר 2020, כל הקוד של TypeScript זמין ב-GitHub.[3]

היסטוריהעריכה

הגרסה הראשונה שוחררה באוקטובר 2012 (בגרסה 0.8) לאחר שנתיים של פיתוח פנימי במיקרוסופט.

TypeScript 0.9, ששוחררה בשנת 2013, הוסיפה תמיכה בגנריות. TypeScript 1.0 שוחררה בכנס המפתחים Build של מיקרוסופט בשנת 2014.

ביולי 2014 הכריז צוות הפיתוח של TypeScript על מהדר חדש, וטענו לביצועיו שופרו פי 5. במקביל, קוד המקור, שבתחילה היה זמין ב-CodePlex, הועבר ל-GitHub.

ב- 22 בספטמבר 2016 שוחררה גרסה 2.0 של TypeScript.

גרסה 3.0 של TypeScript שוחררה ב -30 ביולי 2018, והביאה תוספות רבות לשפה, כמו tuples בפרמטרי rest וביטויי spread, פרמטרי rest מטיפוס tuple, פרמטרי rest מטיפוסים גנריים וכן הלאה.

תכונותעריכה

TypeScript מוסיפה תכונות ל-ECMAScript 6, כגון:

בנוסף, TypeScript מאפשרת לקבוע שהטרנספילציה תיצור קוד JavaScript מגרסאות ישנות של ECMAScript (עד ECMAScript 3). התכונות הבאות של ECMAScript 2015 ממומשות ע"י TypeScript לתמיכה בגרסאות ישנות:

תאימות ל-JavaScriptעריכה

TypeScript היא ערכת-על (superset) של ECMAScript 2015, שהיא בעצמה ערכת-על של ECMAScript 5, המכונה בדרך כלל JavaScript. כלומר, היא מכילה את כל הפקודות והתחביר של JavaScript. ככזו, כל קוד JavaScript הוא גם קוד TypeScript תקין. כברירת מחדל המהדר מכוון ל-ECMAScript 5, הסטנדרט כיום, אך הוא מסוגל גם ליצור קוד הנתמך ב-ECMAScript 3 או 2015.

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

Type annotationsעריכה

TypeScript מוסיפה על התחביר של JavaScript את התחביר לקביעת טיפוס הנקרא type annotation, וזה מאפשר בדיקת טיפוסים בזמן הידור.

function add(left: number, right: number): number {
	return left + right;
}

ה-annotations עבור טיפוסים פרימיטיביים הם number, boolean ו-string. מבנים מטיפוס דינמי הם בעלי הטיפוס any.

המהדר של TypeScript עושה שימוש בהסקת טיפוסים (type inference) כדי להסיק טיפוסים כאשר טיפוסים מסופקים. לדוגמא, בפונקציית add בקוד שלעיל, טיפוס ערך ההחזרה של הפונקציה היה מוסק להיות number, גם אם לא סופק type annotation עבור טיפוס ערך ההחזרה. הסקה זו מבוססת על הטיפוסים הסטטיים של left ו-right שהם שניהם מטיפוס number, והידיעה של המהדר שהתוצאה של חיבור שני משתנים מטיפוס number היא תמיד number. עם זאת, הצהרה מפורשת על טיפוס ערך ההחזרה מאפשרת למהדר לאמת נכונות.

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

קובצי הצהרהעריכה

כאשר קובץ סקריפט של TypeScript עובר תהליך הידור יש אפשרות ליצור קובץ הצהרה (עם הסיומת .d.ts) המתפקד כממשק לרכיבים ב-JavaScript המהודר. בתהליך ההידור מוסרים גופי כל הפונקציות והשיטות ונשמרות רק החתימות של הטיפוסים שייוצאו. לאחר מכן ניתן להשתמש בקובץ ההצהרה המתקבל לתיאור סוגי ה-TypeScript הווירטואליים המיוצאים של ספריית JavaScript או מודול כאשר מפתח צד-שלישי צורך אותו מקוד TypeScript.

הרעיון של קבצי הצהרה הוא מקביל לקובצי "Header" הקיים ב-C/C++.

declare namespace arithmetics {
    add(left: number, right: number): number;
    subtract(left: number, right: number): number;
    multiply(left: number, right: number): number;
    divide(left: number, right: number): number;
}

ניתן לכתוב קובצי הצהרת טיפוסים באופן ידני עבור ספריות JavaScript קיימות, כפי שנעשה עבור jQuery ו-Node.js.

מבחר גדול של קובצי הצהרה עבור ספריות JavaScript פופולריות זמין ב-GitHub בפרויקט DefinitelyTyped.

קישורים חיצונייםעריכה

  אתר האינטרנט של TypeScript

הערות שולייםעריכה

  1. ^ הידור מקוד בשפה אחת לקוד בשפה אחרת
  2. ^ Mary Branscombe, Why TypeScript Is Growing More Popular, thenewstack.io
  3. ^ microsoft/TypeScript, 24 באפריל 2020, בדיקה אחרונה ב-24 באפריל 2020