TypeScript

Վիքիպեդիայից՝ ազատ հանրագիտարանից
Jump to navigation Jump to search
TypeScript
TypeScript Logo (Blue).svg
Տեսակծրագրավորման լեզու և ազատ ծրագրային ապահովում
Առաջացել էհոկտեմբերի 1, 2012
ՍտեղծողՄայքրոսոֆթ
Ընդլայնումներ.ts
Ներշնչվել էՋավաՍկրիպտ, C Sharp, Ջավա և CoffeeScript
ԱրտոնագիրApache License 2.0[1]
Կայքtypescriptlang.org[2]
Աղբյուր կոդgithub.com/Microsoft/TypeScript

TypeScript, ծրագրավորման լեզու, որը 2012 թվականին ներկայացրել է Մայքրոսոֆթ ընկերությունը որպես ցանցի կիրառական ծրագրերի մշակման միջավայր՝ ընդլայնված JavaScript-ի հնարավորություններով։

TypeScript լեզվի ստեղծողը համարվում է Անդերս Հեյլսբերգը (անգլ.՝ Anders Hejlsberg), որը նախկինում ստեղծել է նաև Turbo Pascal, Delphi և C# լեզուները։

Լեզվի առանձնահատկությունը համարվում է Open Web Foundation Specification Agreement (OWFa 1.0) համաձայնագրի շրջանակներով բաց և հրապարակային թողարկումը։

TypeScript-ը համարվում է JavaScript-ի հետ համատեղելի։ Գործնականում, TypeScript ծրագրի կոմպիլացիայից հետո այն կարելի է գործարկել ցանկացած ցանցային դիտարկչում կամ օգտագործել համատեղ ցանցային Node.js հարթակում։

TypeScript-ը JavaScript-ից տարբերվում է բացահայտ[en] տիպավորման հնարավորությամբ, լիարժեք դասերի կիրառման աջակցությամբ (ինչպես այլ դասական օբյեկտ-կողմոնորոշված լեզուներում), ինչպես նաև մոդուլների միացման հնարավորությամբ, որը կոչված է աշխատանքի արագության բարձրացմանը, ընթերնելիության դյուրացմանը, կոդի կրկնվելու հնարավորությանը, մշակման և կոմպիլացման ընթացքում սխալների որոնմանը և ծրագրի աշխատանքի արագացմանը։

Թողարկման ժամանակ ներկայացվեց Vim և Emacs խմբագրիչների համար TypeScript-ի ընդլայնված շարահյուսության ֆայլեր, ինչպես նաև հավելված Microsoft Visual Studio-ի համար։

Լեզվի թողարման հետ միաժամանակ մշակողները պատրաստել էին ստատիկ տեսակի ֆայլեր որոշ հայտնի գրադարանների, այդ թվում jQuery-ի համար։

Ստեղծում[խմբագրել | խմբագրել կոդը]

TypeScript-ը ստեղծվեց ինչպես Մայքրոսոֆթի, այնպես էլ այլ մեծամասշտաբ ծրագրերում JavaScript-ի կանխատեսվող բացթողումների համար[3][4]։

TypeScript-ի ստեղծողները լուծում էին փնտրում, որը չէր խախտի առկա չափորոշիչները և նրա քրոսպլատֆորմ աջակցումը։ Իմանալով, որ միայն ECMAScript չափորոշիչներն են առաջարկում ծրագրավորման համար ապագա՝ դասերի բազայով (Class-based programming), TypeScript-ի հիմքում դրվեց հենց այդ վերափոխումը։ Դա բերեց սինտակտային լեզվային հավելվածների գործիքակազմով JavaScript կոմպիլյատորի ստեղծմանը, որն ավելացրեց հիմնական առաջարկները։ Այս պարագայում TypeScript-ը համարվում է այն, ինչը պետք էր սպասել ECMAScript 6-ից։ Լեզվի յուրօրինակ կողմը ոչ թե առաջարկներն են, այլ ստատիկ տիպավորման ավելացումը, որը թույլ է տալիս կատարել լեզվի ստատիկ վերլուծություն։

ECMAScript 6 աջակցում[խմբագրել | խմբագրել կոդը]

TypeScript-ն ավելացնում է հետևյալ ֆունկցիաների աջակցումը․ դասեր, սահմանված ֆունկցիաների (սահմանված ֆունկցիաներ) մոդուլներ և ֆունկցիաներ, ինչպես նրանք առաջարկված են եղել ECMAScript 6 չափորոշիչներով։

Լեզվի առանձնահատկություններ[խմբագրել | խմբագրել կոդը]

TypeScript-ը ECMAScript 5-ի ընդլայնված լեզուն է։ Ավելացված են հետևյալ հնարավորությունները․

  • Տիպերի նկարագրություն[en] և նրանց համաձայնության ստուգում
  • Դասեր
  • Ինտերֆեյս
  • Թվարկված տեսակներ
  • Միքսիններ
  • Ընդհանուր ծրագրավորում
  • Մոդուլներ[5]
  • Անանուն ֆունկցիաների շարահյուսության կրճատում
  • Լրացուցիչ պարամետրեր և կանխադրված պարամետրեր
  • Կորտեժներ։

Շարահյուսությամբ TypeScript-ը շատ նման է JScript .NET-ին, որը ECMA-262 լեզվային ստանդարտով Մայքրոսոֆթի հերթական արտադրանքն է ու ապահովում է ստատիկ տիպավորում և դասական օբյեկ-կողմոնորշված լեզվի հնարավորությունները, ինչպիսիք են դասերը, ժառանգումը, ինտերֆեյսը և անվանակարգումը։

Համատեղելիությունը JavaScript-ի հետ[խմբագրել | խմբագրել կոդը]

TypeScript լեզուն կարգավորվել է JavaScript-ով։ Ուստի JavaScript ծրագիրը նույնպես համարվում է TypeScript-ի ճիշտ ծրագիր, և TypeScript-ը կարող է արագ ներգրավել JavaScript կոդը։ TypeScript-ը կոմպիլացնում է ES3-ը[6]։

TypeScript-ի հետ հնարավոր է օգտագործել JavaScript կոդ, որոնք ներառում են հայտնի գրադարանններ[6]։

Տեսակներ[խմբագրել | խմբագրել կոդը]

TypeScript-ը հնարավորություն է տալիս սահմանել տեսակներ՝ նրանց դասավորության ստատիկ ստուգման համար։ Սակայն դա պարտադիր պայման չէ և JavaScript-ի սովորական դինամիկ տիպավորման համար կարելի է այն անտեսել՝

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

Պարզ տեսակի համար գոյություն ունի մի քանի նկարագրություն․ number, boolean և string։ Թույլ կամ դինամիկ մուտքագրման համար կառուցվածքն ունի any տեսակը։

Որոշակի տեսակներ կարող են փոխակերպվել կոնկրետ հայտարարված ֆայլի, որպեսզի տեսակի մասին տեղեկությունը դառնա առավել հասանելի արդեն կոմպիլացված JavaScript ծրագրերի տարբեր տեսակների օգտագործման դեպքում։ Սահմանումները կարող են կիրառվել գոյություն ունեցող JavaScript գրադարաններում, ինչպես դա արված է Node.js-ի և JQuery-ի համար։


JavaScript կոմպիլյատորը փորձում է դուրս բերել տեսակը, եթե այն հտակ սահմանված չէ։ Օրինակ վերևի կոդում add մեթոդի համար դուրս կբերվի number, եթե անգամ հստակ սահմանված չէ տեսակը։ Սա հիմնված է left և right numbers ստատիկ տիպերի վրա և կոմպիլյատորը «գիտակցում է», որ երկու numbers տիպերի ավելացումը միշտ number է։

Եթե տեսակը հնարավոր չէ դուրս բերել սահմանման բացակայության պատճառով, ապա որպես կանխադրված տեսակ կլինի դինամիկ any տեսակը։ any տեսակի արժեքը աջակցում է նույն այն գործողությունները, ինչ որ այդ արժեքը JavaScript-ում[7]։

Հայտարարագրերի ֆայլեր[խմբագրել | խմբագրել կոդը]

TypeScript սցենարի կոմպիլացման ժամանակ կա հայտարարագրերի ֆայլեր ստեղծելու հնարավորություն(.d.ts), որը JavaScript կոմպիլացման մեջ օգտագործվում է որպես բաղադրյալ-կողմոնորշված ծրագրավորման ինտերֆեյս։ Գործընթացի ընթացքում կոմպիլյատորը ջնջում է բոլոր ֆունկցիաները և մեթոդները և պահում է միայն տեսակների ստորագրությունները։

Հայտարարագրերի ֆայլի հայեցակարգը նման է C++ լեզվում գլխային ֆայլին (Include directive).

declare module 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 borisyankovDefinitelyTyped պահոցում։

Դասեր[խմբագրել | խմբագրել կոդը]

TypeScript-ը աջակցում է ECMAScript 6-ի դասեր, որը թույլ է տալիս կիրառել տեսակների սահմանում։

class Person {
    private name: string;
    private age: number;
    private salary: number;

    constructor(name: string, age: number, salary: number) {
        this.name = name;
        this.age = age;
        this.salary = salary;
    }
    
    toString(): string {
        return this.name + " (" + this.age + ")" + "(" + this.salary + ")";
    }
}

Ձևանմուշներ[խմբագրել | խմբագրել կոդը]

TypeScript-ը աջակցում է ընդհանուր ծրագրավորում[8]։

Տես նաև[խմբագրել | խմբագրել կոդը]

Ծանոթագրություններ[խմբագրել | խմբագրել կոդը]

  1. The typescript Open Source Project on Open Hub: Licenses Page — 2006.
  2. https://api.github.com/repos/Microsoft/TypeScript
  3. Anders Hejlsberg (2012-10-05)։ «What is TypeScript and why with Anders Hejlsberg»։ www.hanselminutes.com։ Վերցված է 2014-01-15 
  4. S. Somasegar (2012-10-01)։ «TypeScript: JavaScript Development at Application Scale»։ msdn.com։ Վերցված է 2013-11-27 
  5. Klint Finley (2012-10-01)։ «Microsoft Previews New JavaScript-Like Programming Language TypeScript»։ TechCrunch։ Վերցված է 2013-11-27 
  6. 6,0 6,1 Official TypeScript Home Page
  7. TypeScript Language Specification p.24 Archived 2013-11-17 at the Wayback Machine.
  8. Jonathan Turner (2013-06-18)։ «Announcing TypeScript 0.9»։ msdn.com։ Վերցված է 2013-11-27