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 .
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.
TypeScript přidává podporu pro následující konstrukce ze standardu ECMAScript 6: třídy, moduly a syntaxe funkce šipky.
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 ; }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.
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 ES5TypeScript 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.
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 } ` ; } }TypeScript podporuje obecné programování [15] .
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] .
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.
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.
![]() | |
---|---|
V bibliografických katalozích |
JavaScript | |
---|---|
Nápady | |
Kompilátory | |
Motory | |
Knihovny a rámce | |
redaktoři | |
Nástroje |
|
Související technologie | |
Lidé | |
Kategorie |
Node.js | ||
---|---|---|
Plošina | ||
Rámce | ||
Jazyky | ||
hostitelé |
|
Bezplatný a otevřený software společnosti Microsoft | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
obecná informace |
| ||||||||||||
Software _ |
| ||||||||||||
licence | |||||||||||||
související témata |
| ||||||||||||
Kategorie |