SlideShare uma empresa Scribd logo
1 de 24
TypeScript
Příčetný jazyk pro web

#develcz

@borekb
Fahrplan
▪ Proč TypeScript

▪ Hlavní vlastnosti
▪ Shrnutí, zhodnocení, chlebíčky

#develcz

@borekb
Dosah HTML5 technologií:
▪ Běžné weby

▪ Chytřejší weby (GitHub, Khan Academy, …)
▪ Skoro-tlustí klienti (Gmail, Outlook.com, …)
▪ Mobilní / tabletové aplikace (PhoneGap, Metro)
▪ Hry
▪ Desktopové aplikace (Brackets, …)
▪ Celé systémy (webOS, Firefox OS)
▪ Server-side (node.js, …)

 Potřeba vytvářet opravdu komplexní věci
#develcz

@borekb
Co nabízí HTML5 „v základu“
▪ Vykreslování HTML / CSS + DOM

▪ JavaScript jako jazyk
▪ VM / engine



?



▪ „F12 tools“ v prohlížečích



– Firebug, Chrome Dev Tools, IE dev tools

Klíčová otázka: je to dostatečné?
#develcz

@borekb
Základní charakteristika
čistého JS
1. Zásadní výhoda:

je to jednoduchý jazyk

2. Zásadní nevýhoda:

je to jednoduchý jazyk

Co je na JS dobré

Co je potenciálně problematické

Dynamické typování

Dynamické typování

Žádné třídy, rozhraní apod.

Žádné třídy, rozhraní apod.

Není klasická třídní dědičnost

Není klasická třídní dědičnost

Nevynucuje strukturu zdrojáků

Nevynucuje strukturu zdrojáků

…

…

#develcz

@borekb
Typické problémy pro velké
aplikace
▪ Stejné koncepty si různé týmy implementují různě
– Třídy
– Dědičnost
– Jmenné prostory apod.

▪ Problematická statická analýza kódu
▪ Relativně obtížná toolovatelnost

#develcz

@borekb
Reakce komunity
Vývoj standardů
• Málem vznikl
ECMAScript 4
• ES5, ES6

Vznik technologií
s kompilací do JS
• GWT
• Apache Flex

#develcz

Nástroje nad
JavaScriptem
• JSLint, JSHint,
• Google Closure
Compiler

Transpilery do JS
• CoffeeScript
• Script#
• TypeScript

@borekb
Co je TypeScript
▪ Jazyk a transpiler do JavaScriptu
– NENÍ to:
▪ Nová knihovna
▪ Aplikační framework
▪ Vývojové prostředí

– Opravdu jen jazyk

▪ Vzniklý „jen tak mimochodem“ v Microsoftu
– potřebovali vyplnit čas před další prací na C#

#develcz

@borekb
Co je na TypeScriptu zajímavé

▪ Nadmnožina JavaScriptu
– „All JavaScript code is TypeScript code“

▪ Chytrý typový systém (TypeScript)
– Volitelnost typů, typová inference, strukturální typovost
apod.

▪ Podpora v nástrojích
– Visual Studio, WebStorm, Sublime Text, …

▪ Snadná integrace s existujícím ekosystémem
– *.d.ts pro jQuery, Node.js, AngularJS, Ember, …

▪ Vlastnosti ES6 dostupné už dnes
#develcz

@borekb
Instalace
▪ NPM
– npm install -g typescript

▪ Plugin do některých IDE
– Visual Studio
– JetBrains IDEs (WebStorm, PhpStorm, IDEA)

#develcz

@borekb
Jak TypeScript vypadá

#develcz

@borekb
Tři hlavní rozšíření JS
syntaxe
1. Datové typy, typový systém
– včetně generik

2. Třídy, rozhraní, dědičnost
3. Moduly

#develcz

@borekb
Typový systém
Základní pravidla:

1. Psaní datových typů je volitelné
2. Když to jde, kompilátor si typ proměnné domyslí
(„type inference“, a to oběma směry)

3. Strukturální typový systém
– důležitý je „tvar objektů“, ne jejich název nebo konkrétní
realizace

#develcz

@borekb
Typový systém - příklad

#develcz

http://jdem.cz/8rju5

@borekb
Třídy a rozhraní

#develcz

http://jdem.cz/zqae7

@borekb
Moduly

#develcz

@borekb
Moduly

#develcz

http://jdem.cz/zqay7

@borekb
Další syntaktické prvky
▪ Generika

▪ Lambda výrazy
▪ Chytré konstruktory
▪ Gettery / settery z ES5
▪ JSDoc (!)

#develcz

@borekb
Současný stav
▪ Aktuálně verze 0.9.x

▪ Podpora ve Visual Studio 2012 a 2013
▪ Podpora v JetBrains IDE
(WebStorm, PhpStorm, …)

▪ Čeká se na v1.0
– Dodělání specifikace, zaručení 100% správného chování

▪ Post-1.0
– Async/await
– Protected přístup
– ES6 output
#develcz

@borekb
TypeScript je použitelný dnes
Projekty používající TypeScript:

▪ Webový frontend k TFS (~80kLoC)
▪ Různé projekty Adobe
▪ TouchDevelop
▪ Socl.com
▪ PolyCraft (3D hra)
▪ TypeScript compiler
#develcz

@borekb
Dobré vědět…
▪ TypeScript použitelný i pro server-side vývoj
– Node.js
– Deklarační soubory pro mnoho modulů
(express, request, …)
– Podporuje generování CommonJS modulů

▪ Repozitáře d.ts souborů:
– https://github.com/borisyankov/DefinitelyTyped
– https://github.com/soywiz/typescript-node-definitions

▪ Specifikace je dobře čitelná a plná příkladů

#develcz

@borekb
„

Microsoft's TypeScript may be the best of
the many JavaScript front ends. It seems to
generate the most attractive code.
-- Douglas Crockford

#develcz

@borekb
Díky && otázky?

#develcz

@borekb
Zdroje
▪ Homepage:
– http://www.typescriptlang.org/

▪ Codeplex stránka (bugy, diskuze apod.):
– https://typescript.codeplex.com/

▪ Definiční soubory pro skoro cokoliv:
– https://github.com/borisyankov/DefinitelyTyped

#develcz

@borekb

Mais conteúdo relacionado

Semelhante a Borek Bernard: TypeScript - příčetný jazyk pro web

Smalltalk prakticky [CZ]
Smalltalk prakticky [CZ]Smalltalk prakticky [CZ]
Smalltalk prakticky [CZ]Tomáš Kukol
 
Spring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou TvariSpring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou TvariRoman Pichlík
 
Výběr vhodných technologii pro startup v prostředí cloudu
Výběr vhodných technologii pro startup v prostředí clouduVýběr vhodných technologii pro startup v prostředí cloudu
Výběr vhodných technologii pro startup v prostředí clouduJan Kodera
 
Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)Pavel Růžička
 
Představení Ruby on Rails
Představení Ruby on RailsPředstavení Ruby on Rails
Představení Ruby on Railsigloonet
 
node.js: zápisky z fronty (Battle guide to node.js)
node.js: zápisky z fronty (Battle guide to node.js)node.js: zápisky z fronty (Battle guide to node.js)
node.js: zápisky z fronty (Battle guide to node.js)almadcz
 
Ondra Kučera: Otevřený web a jeho současný stav
Ondra Kučera: Otevřený web a jeho současný stavOndra Kučera: Otevřený web a jeho současný stav
Ondra Kučera: Otevřený web a jeho současný stavTomáš Holas
 
Vyvoj Windows Store aplikaci pomoci HTML, CSS a Javascriptu
Vyvoj Windows Store aplikaci pomoci HTML, CSS a JavascriptuVyvoj Windows Store aplikaci pomoci HTML, CSS a Javascriptu
Vyvoj Windows Store aplikaci pomoci HTML, CSS a JavascriptuJindra Parus
 
Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...
Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...
Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...Péhápkaři
 
Vývoj Windows Store aplikací pomocí HTML, CSS a Javascriptu
Vývoj Windows Store aplikací pomocí HTML, CSS a JavascriptuVývoj Windows Store aplikací pomocí HTML, CSS a Javascriptu
Vývoj Windows Store aplikací pomocí HTML, CSS a JavascriptuJindra Parus
 

Semelhante a Borek Bernard: TypeScript - příčetný jazyk pro web (20)

TNPW2-2012-05
TNPW2-2012-05TNPW2-2012-05
TNPW2-2012-05
 
TNPW2-2013-05
TNPW2-2013-05TNPW2-2013-05
TNPW2-2013-05
 
TNPW2-2014-03
TNPW2-2014-03TNPW2-2014-03
TNPW2-2014-03
 
Smalltalk prakticky [CZ]
Smalltalk prakticky [CZ]Smalltalk prakticky [CZ]
Smalltalk prakticky [CZ]
 
TNPW2-2016-03
TNPW2-2016-03TNPW2-2016-03
TNPW2-2016-03
 
Spring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou TvariSpring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou Tvari
 
TNPW2-2014-05
TNPW2-2014-05TNPW2-2014-05
TNPW2-2014-05
 
Výběr vhodných technologii pro startup v prostředí cloudu
Výběr vhodných technologii pro startup v prostředí clouduVýběr vhodných technologii pro startup v prostředí cloudu
Výběr vhodných technologii pro startup v prostředí cloudu
 
Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)
 
Představení Ruby on Rails
Představení Ruby on RailsPředstavení Ruby on Rails
Představení Ruby on Rails
 
Webové technologie
Webové technologieWebové technologie
Webové technologie
 
node.js: zápisky z fronty (Battle guide to node.js)
node.js: zápisky z fronty (Battle guide to node.js)node.js: zápisky z fronty (Battle guide to node.js)
node.js: zápisky z fronty (Battle guide to node.js)
 
Ondra Kučera: Otevřený web a jeho současný stav
Ondra Kučera: Otevřený web a jeho současný stavOndra Kučera: Otevřený web a jeho současný stav
Ondra Kučera: Otevřený web a jeho současný stav
 
TNPW2-2016-05
TNPW2-2016-05TNPW2-2016-05
TNPW2-2016-05
 
Vyvoj Windows Store aplikaci pomoci HTML, CSS a Javascriptu
Vyvoj Windows Store aplikaci pomoci HTML, CSS a JavascriptuVyvoj Windows Store aplikaci pomoci HTML, CSS a Javascriptu
Vyvoj Windows Store aplikaci pomoci HTML, CSS a Javascriptu
 
Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...
Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...
Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...
 
TNPW2-2011-06
TNPW2-2011-06TNPW2-2011-06
TNPW2-2011-06
 
TNPW2-2012-02
TNPW2-2012-02TNPW2-2012-02
TNPW2-2012-02
 
TNPW2-2013-07
TNPW2-2013-07TNPW2-2013-07
TNPW2-2013-07
 
Vývoj Windows Store aplikací pomocí HTML, CSS a Javascriptu
Vývoj Windows Store aplikací pomocí HTML, CSS a JavascriptuVývoj Windows Store aplikací pomocí HTML, CSS a Javascriptu
Vývoj Windows Store aplikací pomocí HTML, CSS a Javascriptu
 

Mais de Develcz

Daniel Steigerwald: WYSIWYG je šik! (když funguje)
Daniel Steigerwald: WYSIWYG je šik! (když funguje)Daniel Steigerwald: WYSIWYG je šik! (když funguje)
Daniel Steigerwald: WYSIWYG je šik! (když funguje)Develcz
 
Ondřej Hlaváček: Životní cyklus featury
Ondřej Hlaváček: Životní cyklus featuryOndřej Hlaváček: Životní cyklus featury
Ondřej Hlaváček: Životní cyklus featuryDevelcz
 
Martin Hassman: Jak se tvoří addony pro World of Warcraft
Martin Hassman: Jak se tvoří addony pro World of WarcraftMartin Hassman: Jak se tvoří addony pro World of Warcraft
Martin Hassman: Jak se tvoří addony pro World of WarcraftDevelcz
 
Ondřej Voves: Jak přepsat monolit do mikroslužeb
Ondřej Voves: Jak přepsat monolit do mikroslužebOndřej Voves: Jak přepsat monolit do mikroslužeb
Ondřej Voves: Jak přepsat monolit do mikroslužebDevelcz
 
Marcel Šulek: Zpraste svoje kódy
Marcel Šulek: Zpraste svoje kódyMarcel Šulek: Zpraste svoje kódy
Marcel Šulek: Zpraste svoje kódyDevelcz
 
Michal Illich: Vývojáři staví letadlo
Michal Illich: Vývojáři staví letadloMichal Illich: Vývojáři staví letadlo
Michal Illich: Vývojáři staví letadloDevelcz
 
Ondřej Kokeš: Zpracování dat z veřejných zdrojů
Ondřej Kokeš: Zpracování dat z veřejných zdrojůOndřej Kokeš: Zpracování dat z veřejných zdrojů
Ondřej Kokeš: Zpracování dat z veřejných zdrojůDevelcz
 
Patrick Zandl: Open source software, hardware, 3D tiskárny a tvrdý business -...
Patrick Zandl: Open source software, hardware, 3D tiskárny a tvrdý business -...Patrick Zandl: Open source software, hardware, 3D tiskárny a tvrdý business -...
Patrick Zandl: Open source software, hardware, 3D tiskárny a tvrdý business -...Develcz
 
Štěpán Bechynský: Hardware pro IoT projekty nejen pro hobby, ale i pro průmysl
Štěpán Bechynský: Hardware pro IoT projekty nejen pro hobby, ale i pro průmyslŠtěpán Bechynský: Hardware pro IoT projekty nejen pro hobby, ale i pro průmysl
Štěpán Bechynský: Hardware pro IoT projekty nejen pro hobby, ale i pro průmyslDevelcz
 
Tomáš Vondra: Paralelizace dotazu a partitioning v PostgreSQL
Tomáš Vondra: Paralelizace dotazu a partitioning v PostgreSQLTomáš Vondra: Paralelizace dotazu a partitioning v PostgreSQL
Tomáš Vondra: Paralelizace dotazu a partitioning v PostgreSQLDevelcz
 
Tomáš Zvěřina: Flutter.io - multiplatformní vývoj mobilních aplikací
Tomáš Zvěřina: Flutter.io - multiplatformní vývoj mobilních aplikacíTomáš Zvěřina: Flutter.io - multiplatformní vývoj mobilních aplikací
Tomáš Zvěřina: Flutter.io - multiplatformní vývoj mobilních aplikacíDevelcz
 
Jakub Vrána: Dokazatelná bezpečnost
Jakub Vrána: Dokazatelná bezpečnostJakub Vrána: Dokazatelná bezpečnost
Jakub Vrána: Dokazatelná bezpečnostDevelcz
 
Roman Schejbal: From Madness To Reason
Roman Schejbal: From Madness To ReasonRoman Schejbal: From Madness To Reason
Roman Schejbal: From Madness To ReasonDevelcz
 
Michal Illich: Zuri aneb Vývojáři staví letadlo
Michal Illich: Zuri aneb Vývojáři staví letadloMichal Illich: Zuri aneb Vývojáři staví letadlo
Michal Illich: Zuri aneb Vývojáři staví letadloDevelcz
 
Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...
Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...
Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...Develcz
 
David Majda: Autoformátování kódu
David Majda: Autoformátování kóduDavid Majda: Autoformátování kódu
David Majda: Autoformátování kóduDevelcz
 
David Grudl: Open source: The Good, the Bad and the Ugly
David Grudl: Open source: The Good, the Bad and the UglyDavid Grudl: Open source: The Good, the Bad and the Ugly
David Grudl: Open source: The Good, the Bad and the UglyDevelcz
 
Ondřej Machulda: Začíná zlatá doba end-to-end testů!
Ondřej Machulda: Začíná zlatá doba end-to-end testů!Ondřej Machulda: Začíná zlatá doba end-to-end testů!
Ondřej Machulda: Začíná zlatá doba end-to-end testů!Develcz
 
Adam Kudrna: Headless WordPress/Drupal
Adam Kudrna: Headless WordPress/DrupalAdam Kudrna: Headless WordPress/Drupal
Adam Kudrna: Headless WordPress/DrupalDevelcz
 
Jaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světě
Jaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světěJaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světě
Jaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světěDevelcz
 

Mais de Develcz (20)

Daniel Steigerwald: WYSIWYG je šik! (když funguje)
Daniel Steigerwald: WYSIWYG je šik! (když funguje)Daniel Steigerwald: WYSIWYG je šik! (když funguje)
Daniel Steigerwald: WYSIWYG je šik! (když funguje)
 
Ondřej Hlaváček: Životní cyklus featury
Ondřej Hlaváček: Životní cyklus featuryOndřej Hlaváček: Životní cyklus featury
Ondřej Hlaváček: Životní cyklus featury
 
Martin Hassman: Jak se tvoří addony pro World of Warcraft
Martin Hassman: Jak se tvoří addony pro World of WarcraftMartin Hassman: Jak se tvoří addony pro World of Warcraft
Martin Hassman: Jak se tvoří addony pro World of Warcraft
 
Ondřej Voves: Jak přepsat monolit do mikroslužeb
Ondřej Voves: Jak přepsat monolit do mikroslužebOndřej Voves: Jak přepsat monolit do mikroslužeb
Ondřej Voves: Jak přepsat monolit do mikroslužeb
 
Marcel Šulek: Zpraste svoje kódy
Marcel Šulek: Zpraste svoje kódyMarcel Šulek: Zpraste svoje kódy
Marcel Šulek: Zpraste svoje kódy
 
Michal Illich: Vývojáři staví letadlo
Michal Illich: Vývojáři staví letadloMichal Illich: Vývojáři staví letadlo
Michal Illich: Vývojáři staví letadlo
 
Ondřej Kokeš: Zpracování dat z veřejných zdrojů
Ondřej Kokeš: Zpracování dat z veřejných zdrojůOndřej Kokeš: Zpracování dat z veřejných zdrojů
Ondřej Kokeš: Zpracování dat z veřejných zdrojů
 
Patrick Zandl: Open source software, hardware, 3D tiskárny a tvrdý business -...
Patrick Zandl: Open source software, hardware, 3D tiskárny a tvrdý business -...Patrick Zandl: Open source software, hardware, 3D tiskárny a tvrdý business -...
Patrick Zandl: Open source software, hardware, 3D tiskárny a tvrdý business -...
 
Štěpán Bechynský: Hardware pro IoT projekty nejen pro hobby, ale i pro průmysl
Štěpán Bechynský: Hardware pro IoT projekty nejen pro hobby, ale i pro průmyslŠtěpán Bechynský: Hardware pro IoT projekty nejen pro hobby, ale i pro průmysl
Štěpán Bechynský: Hardware pro IoT projekty nejen pro hobby, ale i pro průmysl
 
Tomáš Vondra: Paralelizace dotazu a partitioning v PostgreSQL
Tomáš Vondra: Paralelizace dotazu a partitioning v PostgreSQLTomáš Vondra: Paralelizace dotazu a partitioning v PostgreSQL
Tomáš Vondra: Paralelizace dotazu a partitioning v PostgreSQL
 
Tomáš Zvěřina: Flutter.io - multiplatformní vývoj mobilních aplikací
Tomáš Zvěřina: Flutter.io - multiplatformní vývoj mobilních aplikacíTomáš Zvěřina: Flutter.io - multiplatformní vývoj mobilních aplikací
Tomáš Zvěřina: Flutter.io - multiplatformní vývoj mobilních aplikací
 
Jakub Vrána: Dokazatelná bezpečnost
Jakub Vrána: Dokazatelná bezpečnostJakub Vrána: Dokazatelná bezpečnost
Jakub Vrána: Dokazatelná bezpečnost
 
Roman Schejbal: From Madness To Reason
Roman Schejbal: From Madness To ReasonRoman Schejbal: From Madness To Reason
Roman Schejbal: From Madness To Reason
 
Michal Illich: Zuri aneb Vývojáři staví letadlo
Michal Illich: Zuri aneb Vývojáři staví letadloMichal Illich: Zuri aneb Vývojáři staví letadlo
Michal Illich: Zuri aneb Vývojáři staví letadlo
 
Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...
Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...
Ondřej Šika: Docker, Traefik a CI - Mějte nasazené všeny větve na kterých pra...
 
David Majda: Autoformátování kódu
David Majda: Autoformátování kóduDavid Majda: Autoformátování kódu
David Majda: Autoformátování kódu
 
David Grudl: Open source: The Good, the Bad and the Ugly
David Grudl: Open source: The Good, the Bad and the UglyDavid Grudl: Open source: The Good, the Bad and the Ugly
David Grudl: Open source: The Good, the Bad and the Ugly
 
Ondřej Machulda: Začíná zlatá doba end-to-end testů!
Ondřej Machulda: Začíná zlatá doba end-to-end testů!Ondřej Machulda: Začíná zlatá doba end-to-end testů!
Ondřej Machulda: Začíná zlatá doba end-to-end testů!
 
Adam Kudrna: Headless WordPress/Drupal
Adam Kudrna: Headless WordPress/DrupalAdam Kudrna: Headless WordPress/Drupal
Adam Kudrna: Headless WordPress/Drupal
 
Jaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světě
Jaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světěJaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světě
Jaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světě
 

Borek Bernard: TypeScript - příčetný jazyk pro web

  • 1. TypeScript Příčetný jazyk pro web #develcz @borekb
  • 2. Fahrplan ▪ Proč TypeScript ▪ Hlavní vlastnosti ▪ Shrnutí, zhodnocení, chlebíčky #develcz @borekb
  • 3. Dosah HTML5 technologií: ▪ Běžné weby ▪ Chytřejší weby (GitHub, Khan Academy, …) ▪ Skoro-tlustí klienti (Gmail, Outlook.com, …) ▪ Mobilní / tabletové aplikace (PhoneGap, Metro) ▪ Hry ▪ Desktopové aplikace (Brackets, …) ▪ Celé systémy (webOS, Firefox OS) ▪ Server-side (node.js, …)  Potřeba vytvářet opravdu komplexní věci #develcz @borekb
  • 4. Co nabízí HTML5 „v základu“ ▪ Vykreslování HTML / CSS + DOM ▪ JavaScript jako jazyk ▪ VM / engine  ?  ▪ „F12 tools“ v prohlížečích  – Firebug, Chrome Dev Tools, IE dev tools Klíčová otázka: je to dostatečné? #develcz @borekb
  • 5. Základní charakteristika čistého JS 1. Zásadní výhoda: je to jednoduchý jazyk 2. Zásadní nevýhoda: je to jednoduchý jazyk Co je na JS dobré Co je potenciálně problematické Dynamické typování Dynamické typování Žádné třídy, rozhraní apod. Žádné třídy, rozhraní apod. Není klasická třídní dědičnost Není klasická třídní dědičnost Nevynucuje strukturu zdrojáků Nevynucuje strukturu zdrojáků … … #develcz @borekb
  • 6. Typické problémy pro velké aplikace ▪ Stejné koncepty si různé týmy implementují různě – Třídy – Dědičnost – Jmenné prostory apod. ▪ Problematická statická analýza kódu ▪ Relativně obtížná toolovatelnost #develcz @borekb
  • 7. Reakce komunity Vývoj standardů • Málem vznikl ECMAScript 4 • ES5, ES6 Vznik technologií s kompilací do JS • GWT • Apache Flex #develcz Nástroje nad JavaScriptem • JSLint, JSHint, • Google Closure Compiler Transpilery do JS • CoffeeScript • Script# • TypeScript @borekb
  • 8. Co je TypeScript ▪ Jazyk a transpiler do JavaScriptu – NENÍ to: ▪ Nová knihovna ▪ Aplikační framework ▪ Vývojové prostředí – Opravdu jen jazyk ▪ Vzniklý „jen tak mimochodem“ v Microsoftu – potřebovali vyplnit čas před další prací na C# #develcz @borekb
  • 9. Co je na TypeScriptu zajímavé ▪ Nadmnožina JavaScriptu – „All JavaScript code is TypeScript code“ ▪ Chytrý typový systém (TypeScript) – Volitelnost typů, typová inference, strukturální typovost apod. ▪ Podpora v nástrojích – Visual Studio, WebStorm, Sublime Text, … ▪ Snadná integrace s existujícím ekosystémem – *.d.ts pro jQuery, Node.js, AngularJS, Ember, … ▪ Vlastnosti ES6 dostupné už dnes #develcz @borekb
  • 10. Instalace ▪ NPM – npm install -g typescript ▪ Plugin do některých IDE – Visual Studio – JetBrains IDEs (WebStorm, PhpStorm, IDEA) #develcz @borekb
  • 12. Tři hlavní rozšíření JS syntaxe 1. Datové typy, typový systém – včetně generik 2. Třídy, rozhraní, dědičnost 3. Moduly #develcz @borekb
  • 13. Typový systém Základní pravidla: 1. Psaní datových typů je volitelné 2. Když to jde, kompilátor si typ proměnné domyslí („type inference“, a to oběma směry) 3. Strukturální typový systém – důležitý je „tvar objektů“, ne jejich název nebo konkrétní realizace #develcz @borekb
  • 14. Typový systém - příklad #develcz http://jdem.cz/8rju5 @borekb
  • 18. Další syntaktické prvky ▪ Generika ▪ Lambda výrazy ▪ Chytré konstruktory ▪ Gettery / settery z ES5 ▪ JSDoc (!) #develcz @borekb
  • 19. Současný stav ▪ Aktuálně verze 0.9.x ▪ Podpora ve Visual Studio 2012 a 2013 ▪ Podpora v JetBrains IDE (WebStorm, PhpStorm, …) ▪ Čeká se na v1.0 – Dodělání specifikace, zaručení 100% správného chování ▪ Post-1.0 – Async/await – Protected přístup – ES6 output #develcz @borekb
  • 20. TypeScript je použitelný dnes Projekty používající TypeScript: ▪ Webový frontend k TFS (~80kLoC) ▪ Různé projekty Adobe ▪ TouchDevelop ▪ Socl.com ▪ PolyCraft (3D hra) ▪ TypeScript compiler #develcz @borekb
  • 21. Dobré vědět… ▪ TypeScript použitelný i pro server-side vývoj – Node.js – Deklarační soubory pro mnoho modulů (express, request, …) – Podporuje generování CommonJS modulů ▪ Repozitáře d.ts souborů: – https://github.com/borisyankov/DefinitelyTyped – https://github.com/soywiz/typescript-node-definitions ▪ Specifikace je dobře čitelná a plná příkladů #develcz @borekb
  • 22. „ Microsoft's TypeScript may be the best of the many JavaScript front ends. It seems to generate the most attractive code. -- Douglas Crockford #develcz @borekb
  • 24. Zdroje ▪ Homepage: – http://www.typescriptlang.org/ ▪ Codeplex stránka (bugy, diskuze apod.): – https://typescript.codeplex.com/ ▪ Definiční soubory pro skoro cokoliv: – https://github.com/borisyankov/DefinitelyTyped #develcz @borekb

Notas do Editor

  1. Ravioly