From Wikipedia, the free encyclopedia
TypeScript, ծրագրավորման լեզու, որը 2012 թվականին ներկայացրել է Մայքրոսոֆթ ընկերությունը որպես ցանցի կիրառական ծրագրերի մշակման միջավայր՝ ընդլայնված JavaScript-ի հնարավորություններով։
Տեսակ | ծրագրավորման լեզու, scripting language?, իմպերատիվ ծրագրավորման լեզու, ֆունկցիոնալ ծրագրավորման լեզու, միջոցառմամբ կողմնորոշվող ծրագրավորման լեզու, strict programming language?, բարձր մակարդակի ծրագրավորման լեզու և ազատ և բաց ծրագրային ապահովում |
---|---|
Առաջացել է | հոկտեմբերի 1, 2012 |
Ստեղծող | Մայքրոսոֆթ |
Նախագծող | Մայքրոսոֆթ |
Ընդլայնումներ | .ts և .tsx |
Ներշնչվել է | ՋավաՍկրիպտ, C Sharp, Ջավա և CoffeeScript |
Արտոնագիր | Apache License 2.0[1] |
Կայք | typescriptlang.org(անգլ.) |
Ելակոդ | github.com/Microsoft/TypeScript |
TypeScript Վիքիպահեստում |
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-ի կանխատեսվող բացթողումների համար[2][3]։
TypeScript-ի ստեղծողները լուծում էին փնտրում, որը չէր խախտի առկա չափորոշիչները և նրա քրոսպլատֆորմ աջակցումը։ Իմանալով, որ միայն ECMAScript չափորոշիչներն են առաջարկում ծրագրավորման համար ապագա՝ դասերի բազայով (Class-based programming), TypeScript-ի հիմքում դրվեց հենց այդ վերափոխումը։ Դա բերեց սինտակտային լեզվային հավելվածների գործիքակազմով JavaScript կոմպիլյատորի ստեղծմանը, որն ավելացրեց հիմնական առաջարկները։ Այս պարագայում TypeScript-ը համարվում է այն, ինչը պետք էր սպասել ECMAScript 6-ից։ Լեզվի յուրօրինակ կողմը ոչ թե առաջարկներն են, այլ ստատիկ տիպավորման ավելացումը, որը թույլ է տալիս կատարել լեզվի ստատիկ վերլուծություն։
TypeScript-ն ավելացնում է հետևյալ ֆունկցիաների աջակցումը․ դասեր, սահմանված ֆունկցիաների (սահմանված ֆունկցիաներ) մոդուլներ և ֆունկցիաներ, ինչպես նրանք առաջարկված են եղել ECMAScript 6 չափորոշիչներով։
TypeScript-ը ECMAScript 5-ի ընդլայնված լեզուն է։ Ավելացված են հետևյալ հնարավորությունները․
Շարահյուսությամբ TypeScript-ը շատ նման է JScript .NET-ին, որը ECMA-262 լեզվային ստանդարտով Մայքրոսոֆթի հերթական արտադրանքն է ու ապահովում է ստատիկ տիպավորում և դասական օբյեկ-կողմոնորշված լեզվի հնարավորությունները, ինչպիսիք են դասերը, ժառանգումը, ինտերֆեյսը և անվանակարգումը։
TypeScript լեզուն կարգավորվել է JavaScript-ով։ Ուստի JavaScript ծրագիրը նույնպես համարվում է TypeScript-ի ճիշտ ծրագիր, և TypeScript-ը կարող է արագ ներգրավել JavaScript կոդը։ TypeScript-ը կոմպիլացնում է ES3-ը[5]։
TypeScript-ի հետ հնարավոր է օգտագործել JavaScript կոդ, որոնք ներառում են հայտնի գրադարանններ[5]։
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-ում[6]։
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 borisyankov-ի DefinitelyTyped պահոցում։
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-ը աջակցում է ընդհանուր ծրագրավորում[7]։
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.