Slide 1

Slide 1 text

TypeScript JS utrzymany w ryzach Jan Metrycki front-end developer @ Codete [email protected]

Slide 2

Slide 2 text

JavaScript - elegancki, elastyczny, uniwersalny

Slide 3

Slide 3 text

Kiedy wolność staje się problemem? ● sprawdzanie typów - jedynie imperatywne (typeof, instanceof) ● system klas, który nic nie gwarantuje

Slide 4

Slide 4 text

Kiedy wolność staje się problemem? ● funkcje, których sygnatura nie mówi nic o oczekiwanych argumentach ● nieustrukturyzowane dane

Slide 5

Slide 5 text

Uwagi wstępne ●

Slide 6

Slide 6 text

Uwagi wstępne ● to nie będzie prezentacja o Angular 2 ●

Slide 7

Slide 7 text

Uwagi wstępne ● to nie będzie prezentacja o Angular 2 ● to nie będzie bezkrytyczna apologia TypeScriptu

Slide 8

Slide 8 text

TypeScript - podstawowe fakty ●

Slide 9

Slide 9 text

TypeScript - podstawowe fakty ● projekt Microsoftu ●

Slide 10

Slide 10 text

TypeScript - podstawowe fakty ● projekt Microsoftu ● jeden z twórców - Anders Hejlsberg, architekt C#, Delphi i TurboPascala ●

Slide 11

Slide 11 text

TypeScript - podstawowe fakty ● projekt Microsoftu ● jeden z twórców - Anders Hejlsberg, architekt C#, Delphi i TurboPascala ● język transkompilowany do JS ●

Slide 12

Slide 12 text

TypeScript - podstawowe fakty ● projekt Microsoftu ● jeden z twórców - Anders Hejlsberg, architekt C#, Delphi i TurboPascala ● język transkompilowany do JS ● statyczne typowanie ●

Slide 13

Slide 13 text

TypeScript - podstawowe fakty ● projekt Microsoftu ● jeden z twórców - Anders Hejlsberg, architekt C#, Delphi i TurboPascala ● język transkompilowany do JS ● statyczne typowanie ● nadzbiór JS

Slide 14

Slide 14 text

TypeScript - historia ● X 2012 - opublikowanie projektu (wersja 0.8) ● VII 2014 - nowy kompilator ● początek 2015 (1.5) - zaadoptowanie funkcjonalności ES6 ● połowa 2015 (1.6) - wsparcie dla generatorów i JSX ● IX 2016 (2.0) - zaawansowana inferencja typów ● XII 2016 (2.1) - rozwinięcie mechanizmu inferencji, typy mapowane

Slide 15

Slide 15 text

TypeScript - elementarz ● wszystko na etapie kompilacji ● możliwość stosowania do statycznej analizy JS

Slide 16

Slide 16 text

TypeScript - elementarz ● boolean, number, string, array ● tuple ● enum ● any ● void ● null & undefined ● never

Slide 17

Slide 17 text

TypeScript - elementarz

Slide 18

Slide 18 text

TypeScript - elementarz

Slide 19

Slide 19 text

TypeScript - elementarz

Slide 20

Slide 20 text

TypeScript - elementarz

Slide 21

Slide 21 text

Lepsze klasy ● pola publiczne, prywatne i chronione (public, private, protected) ● modyfikator readonly ● klasy abstrakcyjne ● implementacja interfejsów TypeScript - elementarz

Slide 22

Slide 22 text

Generics ● funkcje ● klasy TypeScript - elementarz

Slide 23

Slide 23 text

"Rygorystyczne" ustawienia ● noImplicitAny ● strictNullChecks TypeScript - elementarz

Slide 24

Slide 24 text

● zaawansowane "zgadywanie" typów TypeScript - nowa funkcjonalność

Slide 25

Slide 25 text

● typy mapowane TypeScript - nowa funkcjonalność

Slide 26

Slide 26 text

● definicje typów do bibliotek - npm @types/… ● świetne wsparcie w IDE (WebStorm, VS Code) - IntelliSense, refactoring, linting TypeScript - tooling

Slide 27

Slide 27 text

● mniej popularny od "vanilla" JS, większy próg wejścia do projektu ● rozwijany przez jedną firmę ● bardzo dynamiczny rozwój ● mniej czytelny kod ● bywa uciążliwy ● problemy z definicjami typów TypeScript - kilka argumentów przeciw

Slide 28

Slide 28 text

● tooling - jedna z największych zalet ● statyczne typowanie samo nie załatwi wszystkiego ● ...a na pewno nie zastąpi testów Podsumowanie

Slide 29

Slide 29 text

Pytania? I to by było na tyle...