Strojopis

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 30. dubna 2022; kontroly vyžadují 8 úprav .
strojopis
Jazyková třída

multiparadigma : objektově orientovaný , generický , funkční , imperativní , aspektově orientovaný , orientovaný na události ,

prototypové programování
Typ provedení kompilace do JavaScriptu
Objevil se v 1. října 2012
Autor Microsoft
Vývojář Microsoft
Přípona souboru .tsnebo.tsx
Uvolnění 4.7.4 [1]  ( 17. června 2022 )
Byl ovlivněn JavaScript , C# , Java a CoffeeScript
Licence Licence Apache 2.0 [2]
webová stránka typescriptlang.org
 Mediální soubory na Wikimedia Commons

TypeScript  je programovací jazyk představený společností Microsoft v roce 2012 a umístěný jako nástroj pro vývoj webových aplikací , který rozšiřuje možnosti JavaScriptu [3] [4] [5] [6] [7] [8] .

Vývojář jazyka TypeScript je Anders Hejlsberg , který dříve vytvořil Turbo Pascal , Delphi a C# .

Jazykové specifikace jsou otevřené a zveřejněné v rámci Open Web Foundation Specification Agreement (OWFa 1.0) [9] .

TypeScript je zpětně kompatibilní s JavaScriptem a kompiluje se do JavaScriptu. Ve skutečnosti, jakmile je program TypeScript zkompilován, může být spuštěn v jakémkoli moderním prohlížeči nebo použit ve spojení se serverovou platformou Node.js. Kód pro experimentální kompilátor, který překládá TypeScript do JavaScriptu, je distribuován pod licencí Apache . Jeho vývoj probíhá ve veřejném úložišti prostřednictvím služby GitHub [10] .

TypeScript se od JavaScriptu liší schopností explicitně přiřazovat statické typy, podporou použití plnohodnotných tříd (jako v tradičních objektově orientovaných jazycích) a podporou zásuvných modulů, která je navržena pro zvýšení rychlosti vývoje, usnadnění čitelnosti, refaktorovat a znovu používat kód a pomoci najít chyby ve fázi vývoje a kompilace a případně urychlit provádění programů.

Plánuje se, že díky plné zpětné kompatibilitě může adaptace stávajících aplikací na nový programovací jazyk probíhat postupně, postupným definováním typů.

V době vydání existují soubory pro pochopení rozšířené syntaxe TypeScript pro Vim a Emacs a také zásuvný modul pro Microsoft Visual Studio .

Současně s vydáním specifikace vývojáři připravili soubory s deklaracemi statického typu pro některé populární JavaScriptové knihovny , včetně jQuery .

Nápověda

TypeScript vznikl na základě vnímaných nedostatků v JavaScriptu ve velkých aplikacích, a to jak u Microsoftu, tak u dalších uživatelů JavaScriptu [11] . Problémy s vývojem složitých programů v JavaScriptu vedly k potřebě usnadnit vývoj jazykových komponent [4] .

Vývojáři TypeScriptu hledali řešení, které by nenarušilo kompatibilitu se standardem a jeho multiplatformní podporou. S vědomím, že pouze standard ECMAScript nabízí budoucí podporu pro programování založené na třídách , byl TypeScript postaven na tomto předpokladu. To vedlo k vytvoření kompilátoru JavaScriptu se sadou rozšíření syntaktického jazyka rozšířeného o návrh, který převádí rozšíření na JavaScript. V tomto smyslu je TypeScript reprezentací toho, co lze očekávat od ECMAScript 6. Jedinečný aspekt není v návrhu, ale v přidání statického typování do TypeScriptu , což umožňuje staticky analyzovat jazyk, což usnadňuje nástroje a podporu IDE.

Podpora ECMAScript 6

TypeScript přidává podporu pro následující konstrukce ze standardu ECMAScript 6: třídy, moduly a syntaxe funkce šipky.

Příklady kódu

Generátor pseudonáhodných hesel pomocí modulu „crypto“ zabudovaného do Node.js :

import * jako krypto z "crypto" ; funkce vygenerovat ( délka : číslo = 16 ) : řetězec { const velká písmena : řetězec = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ; const malá písmena : string = "abcdefghijklmnopqrstuvwxyz" ; const čísla : string = "0123456789" ; const symbols : string = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~" ; const all : string = velká písmena + malá písmena + čísla + symboly ; nech heslo : string = "" ; for ( nech index : číslo = 0 ; index < délka ; index ++ ) { const randomNumber : číslo = krypto . randomInt ( all . length ); heslo += all . charAt ( randomNumber ); } vrátit heslo ; }

Vlastnosti jazyka

TypeScript je rozšířením specifikace ECMAScript 5. Byly přidány následující možnosti:

Syntakticky je TypeScript velmi podobný JScript .NET , nejnovější implementaci národního prostředí ECMA-262 od Microsoftu, která poskytuje podporu pro statické psaní a klasické objektově orientované jazykové funkce, jako jsou třídy, dědičnost, rozhraní a jmenné prostory.

Kompatibilita s JavaScriptem

TypeScript je zpětně kompatibilní s JavaScriptem. Jakýkoli kód JavaScript je tedy správný i pro TypeScript. V TypeScriptu můžete použít existující JS kód a zahrnout oblíbené JavaScriptové knihovny [13] . Typové deklarace pro tyto knihovny jsou často dodávány s nimi nebo mohou být napsány ručně.

Ve výchozím nastavení se TypeScript kompiluje do JavaScriptu vyhovujícího ES3 [13] jako převládajícího standardu. Můžete použít volbu --target nebo její zkrácenou verzi -t k určení verze standardu JavaScript, do kterého bude kód TypeScript kompilován. Tento parametr může nabývat následujících hodnot: ES3 (výchozí), ES5, ES6 / ES2015, ES7 / ES2016, ES2017, ES2018, ES2019, ES2020 nebo ESNext:

aplikace tsc . ts - t ES5

Typ prohlášení

TypeScript poskytuje deklarace typu ke statické kontrole jejich konzistence . Toto je volitelné a lze jej ignorovat, chcete-li použít běžné dynamické psaní JavaScriptu .

funkce add ( vlevo : číslo , vpravo : číslo ) : číslo { return vlevo + vpravo ; }

Pro primitivní typy existuje několik anotací: number, booleana string. Slabě nebo dynamicky zaváděné struktury jsou typu any.

Definice typů lze exportovat do samostatného deklaračního souboru a zpřístupnit tak informace o typu skriptům TypeScript pomocí různých typů již zkompilovaných do JavaScriptu. Definice lze deklarovat do existující knihovny JavaScriptu, jako tomu bylo u Node.js a jQuery .

Kompilátor TypeScript se pokouší odvodit typy , pokud nejsou explicitně specifikovány. Například metoda addve výše uvedeném kódu bude mít výstup jako return to, numberi když v definici nebyl poskytnut žádný typ return. To je založeno na statických typech lefta right numbersznalosti kompilátoru, že výsledek přidání dvou numbersje vždy number. Zadání návratového typu však umožňuje kompilátoru zkontrolovat správnost.

Pokud typ nelze odvodit kvůli chybějícím deklaracím, bude jako výchozí nastaven dynamický typ any. Typ hodnoty anypodporuje stejné operace jako hodnota v JavaScriptu a pro operaci na any[14] se provádí minimální kontrola statického typu .

Soubory deklarací

Když je skript TypeScript zkompilován, existuje možnost vytvořit soubor deklarace (s příponou .d.ts), který se používá jako rozhraní ke komponentám v kompilovaném JavaScriptu. V tomto procesu kompilátor odstraní všechny funkce a těla metod a zachová pouze signatury typů, které jsou exportovány. Výsledný soubor deklarace lze použít k popisu virtuálních typů exportovaných do TypeScriptu knihovny nebo modulu JavaScriptu, když je třetí strana používá v TypeScript.

Koncept deklaračních souborů je podobný jako u hlavičkových souborů v C++ :

deklarovat aritmetiku modulu { přidat ( vlevo : číslo , vpravo : číslo ) : číslo ; odečíst ( vlevo : číslo , vpravo : číslo ) : číslo ; násobit ( vlevo : číslo , vpravo : číslo ) : číslo ; dělit ( vlevo : číslo , vpravo : číslo ) : číslo ; }

Soubory Manifest lze psát ručně pro existující knihovny JavaScriptu i pro jQuery a Node.js.

Třídy

TypeScript podporuje třídy ECMAScript 6, což vám umožňuje podporovat možnost deklarace typu.

class Osoba { konstruktor ( soukromé jméno pouze pro čtení : řetězec , soukromé pouze pro čtení věk : číslo , soukromé plat pouze pro čtení : číslo ) {} public toString () : string { return `Jméno: ${ this . jméno } \nVěk: ${ this . věk } \nPlat: ${ this . plat } ` ; } }

Šablony

TypeScript podporuje obecné programování [15] .

Moduly

Pomocí modulů podporuje TypeScript zapouzdření tříd, rozhraní, funkcí a proměnných ve jmenných prostorech. TypeScript rozlišuje interní a externí moduly. Interní moduly jsou založeny na syntaxi modulu z ECMAScript 6, zatímco externí moduly využívají knihovnu JavaScript ( AMD nebo CommonJS ) [16] .

Vývojářské nástroje

Kompilátor

Nazývá se překladač TypeScript tsc – je napsán v jazyce TypeScript, lze jej zkompilovat do standardního JavaScriptu a následně spustit na libovolném JavaScriptovém enginu (například v prohlížeči). Kompilátor je dodáván se skriptovým serverem, který může spustit kompilátor. Je k dispozici také jako balíček, pro node.jskterý se používá node.jsjako server.

Existuje také alfa verze kompilátoru JavaScript na straně klienta, který spouští TypeScript za běhu při načítání stránky.

Aktuální verze kompilátoru standardně používá ECMAScript verze 5. Je však možné použít i ECMAScript 2015, abyste měli přístup k jedinečným jazykovým funkcím této verze, jako jsou generátory. Jiné třídy než ty, které jsou výslovně popsány ve standardu ECMAScript 2015, jsou dostupné v obou verzích.

Podpora IDE a editoru

K dispozici je plug-in od Microsoftu pro Visual Studio 2012 a WebMatrix a Visual Studio 2013, Visual Studio 2015 mají plnou podporu na úrovni IDE. Podporováno také v kódu Visual Studio . JetBrains podporuje TypeScript, včetně kompilace, refaktoringu a ladění v IDE platformy IntelliJ, jako je PhpStorm 6, WebStorm 6 a IntelliJ IDEA, stejně jako jejich rozšíření Visual Studio ReSharper 8.1. Podporováno v prostředí Codeanywhere . Pro podporu jazyka existují pluginy pro NetBeans a Eclipse.

Mezi online prostředími je jazyk podporován v Cloud9 , Codenvy , CodePen .

V textových editorech Sublime Text, Emacs a Vim je základní jazyková podpora. Editor Atom má plugin pro TypeScript s podporou automatického dokončování, navigace v kódu, formátování a rychlé kompilace.

Poznámky

  1. TypeScript 4.7.4 .
  2. Typový skript Open Source Project na Open Hub: Stránka licencí - 2006.
  3. Microsoft odstraňuje TypeScript, nadmnožinu JavaScriptu . Získáno 2. října 2012. Archivováno z originálu 13. listopadu 2014.
  4. 1 2 S. Somasegar. TypeScript: JavaScript Development at Application Scale  (anglicky)  (mrtvý odkaz) (1. října 2012). Získáno 1. listopadu 2020. Archivováno z originálu dne 3. března 2016.
  5. Microsoft TypeScript: Může nás otec C# zachránit před tyranií JavaScriptu? . Získáno 2. října 2012. Archivováno z originálu 3. srpna 2014.
  6. Microsoft Augments Javascript for Large-scale Development (downlink) . Získáno 2. října 2012. Archivováno z originálu 17. prosince 2013. 
  7. Microsoft oznamuje nový webový programovací jazyk TypeScript (odkaz není k dispozici) . Získáno 2. října 2012. Archivováno z originálu 31. května 2017. 
  8. Microsoft představuje TypeScript, novou open source alternativu k JavaScriptu . Získáno 2. října 2012. Archivováno z originálu 4. října 2012.
  9. Dohoda o konečné specifikaci Open Web Foundation (OWFa 1.0) . Získáno 2. října 2012. Archivováno z originálu dne 10. října 2020.
  10. Projekt TypeScript na GitHubu
  11. Anders Hejlsberg. Co je TypeScript a proč s Andersem Hejlsbergem . www.hanselminutes.com (5. října 2012). Získáno 15. ledna 2014. Archivováno z originálu 27. prosince 2018.
  12. Klint Finley. Microsoft představuje nový programovací jazyk podobný JavaScriptu TypeScript . TechCrunch (1. října 2012). Získáno 27. listopadu 2013. Archivováno z originálu 13. listopadu 2012.
  13. 1 2 Oficiální domovská stránka TypeScript . Získáno 2. října 2012. Archivováno z originálu 10. března 2018.
  14. Specifikace jazyka TypeScript str . 24 Archivováno 17. listopadu 2013.
  15. Jonathan Turner. Oznamujeme TypeScript 0.9 . msdn.com (18. června 2013). Získáno 27. listopadu 2013. Archivováno z originálu 26. listopadu 2013.
  16. Sonke Sothmann. Úvod do modulového systému TypeScript . blog.oio.de (31. ledna 2014). Získáno 21. února 2014. Archivováno z originálu 1. února 2014.

Literatura

  • Steve Fenton. Pro TypeScript: Vývoj JavaScriptu v aplikačním měřítku. - Apress, 2014. - ISBN 978-1-4302-6791-1 .
  • Dan Maharry. TypeScript odhalen . - Apress, 2013. - ISBN 9781430257257 .

Odkazy