31
TypeScript: Tényleg ez lenne a fájdalommentes JavaScript? Balássy György Principal Engineer, LogMeIn Visual Studio and Development Technologies MVP

TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

Embed Size (px)

Citation preview

Page 1: TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

Balássy GyörgyPrincipal Engineer, LogMeInVisual Studio and Development Technologies MVP

Page 2: TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

Mi az a TypeScript?

Page 3: TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

„Feature gap”

State ofthe art JS

State of server JS

State ofweb JS

JavaScript feature gap

Target Productivity

JavaScriptEvolution

ES3 ES5 ES20

16 ES

201

7 ES20

18ES

201

5

March 2015

March 2016

Page 4: TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

Anders Hejlsberg.Nyílt forráskód.

Népszerű.

Page 5: TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

TypeScript: Skálázódó JavaScript.

Page 6: TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

Statikusan típusos.

A JavaScript supersetje.

JavaScriptre fordul.

A fejlesztőeszközök okosabbak lehetnek.

Page 7: TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

Ez JavaScriptfunction greet(name) { return "Hello, " + name;}

var user = "Gipsz Jakab";

document.body.innerHTML = greet(user);

Page 8: TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

Ez TypeScriptfunction greet(name: string) { return "Hello, " + name;}

var user = "Gipsz Jakab";

document.body.innerHTML = greet(user);

A tsc tudja JavaScriptre fordítani.

Page 9: TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

De! Ez is TypeScript. A típus opcionális.

function greet(name) { return "Hello, " + name;}

var user = "Gipsz Jakab";

document.body.innerHTML = greet(user);

Page 10: TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

A jövő képességei már ma.

ECMAScript kompatibilitás.

module, let, const, iterator, generator, promise, generic, enum, class, interface, type, symbols, …

Page 11: TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

Jó-e nekünk a TypeScript?

Page 12: TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

FedEx Day fókusz: end-to-end tesztekNode.js projectES6Babelasync-await (ES7)Protractor, JasmineMeglévő JavaScript kódbázisEszköztámogatás

Page 13: TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

Node.js vs. ES6 import

A tsc érti az import-ot, és tud CommonJS modulokat generálni.

Page 14: TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

Más ES6 nyelvi elemek

A tsc-nek arrow function, class, let, const, … nem gond.

Page 15: TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

Async - await

A tsc képes az async-await-et ES6-ra fordítani.(ES5 támogatás majd TypeScript 2.0-ban.)

Nem kell többé Babel.

Page 16: TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

Típus definíciók más gyártók könyvtáraira

DefinitelyTyped repository a Githubon:

angular-protractor utoljára 1 hónapja frissítvejasmine utoljára 4 napja frissítveselenium-webdriver utoljára 1 hónapja frissítvelodash utoljára 17 napja frissítve

typings segítségével könnyen kezelhető (letöltés, frissítés, …)

Page 17: TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

Meglévő JavaScript kódbázis

Létezik egy allowJs kapcsoló a tsc-ben:.ts és .js fájlok közös projektben

Page 18: TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

Generált fájlok elrejtése WebStormbanEgymás alatt

Külön mappában

Page 19: TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

Hibakeresés WebStormbanTöréspont közvetlenül a .ts fájlba (.map)

Page 20: TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

Hibakeresés WebStormbanStack trace, változók és típusok

Page 21: TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

Protractor stack trace

Page 22: TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

WebStorm IntelliSense

Type inference

Page 23: TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

WebStorm IntelliSenseTípus információ más

gyártók könyvtáraihoz.

Page 24: TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

Folyamatos fordítás WebstormbanManuális fordítás nélkül.

Page 26: TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

Egységes forráskód formázás

Page 27: TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

Hogyan vezethetnénk be a TypeScriptet?

Page 28: TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

LépésekMost: TypeScript az E2E teszteknél

Fejlesztőkörnyezet kialakítása a fejlesztői gépekenLinter szabálykészlet kialakításaWebStorm kódformázási szabálykészlet kialakításaTípus definíciók beszerzéseTípus információ hozzáadása a meglévő kódhozCI/CD környezet felkészítése a TypeScriptreÚtmutató a fejlesztők számára

Később: TypeScript az alkalmazásban

Page 29: TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

Demó: NG6-starter TodoMVC Example

Page 30: TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

Mit nyertünk vele?

Gyorsabban készül a kódBiztosabb refaktorTöbb hibát veszünk észre kódolás közbenEgyszerűbb hibakeresésMinimális kockázat: egyszerű visszaút

Page 31: TypeScript: Tényleg ez lenne a fájdalommentes JavaScript?

„To type, or not to type – that is the question”

- William Scriptspeare

Balássy Gyö[email protected]://balassygyorgy.wordpress.comhttps://github.com/balassy/NG6-todomvc-starter