• Nem Talált Eredményt

Dr. Bilicki VilmosSzegedi TudományegyetemInformatikai TanszékcsoportSzoftverfejlesztés Tanszék 2. TypeScript/JavaScript

N/A
N/A
Protected

Academic year: 2022

Ossza meg "Dr. Bilicki VilmosSzegedi TudományegyetemInformatikai TanszékcsoportSzoftverfejlesztés Tanszék 2. TypeScript/JavaScript"

Copied!
66
0
0

Teljes szövegt

(1)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

2. TypeScript/JavaScript

Dr. Bilicki Vilmos

Szegedi Tudományegyetem Informatikai Tanszékcsoport

(2)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

Összefoglaló

4JavaScript Fejlesztés 4Áttekintés

4ES5 4ES6

4TypeScript

(3)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

(4)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

ECMAscript Múlt

4http://en.wikipedia.org/wiki/ECMAScript

4ECMA: European Computer Manufacturers Association (1961)

4Netscape: Brendan Eich hozta létre 10 nap alatt

Mocha, LiveScript, JavaScript

4ECMAScript: ECMA-262 - 1999

4Egy szabvány, több implementáció (hasonló, mint az SQL szabvány és implementációi)

Ismert implementációi: JavaScript, Jscript (MS),

(5)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

ES5

4Dinamikus programozási nyelv

4Jellemzően kliens-oldali programozásra szánták (pl böngésző)

4Főbb jellemzők:

Prototípus alapú

Dinamikus típuskezelés

First-class függvények (a = function(){})

Több paradigmát támogat: objektum-oritentált, imperatív és funkcionális

4Egyes szerkezetek nagyon hasonlítanak a java- hoz, de nem az!

(6)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

Prototípus alapú öröklődés

(7)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

Dinamikus típuskezelés

(8)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

Példa

(9)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

ES6, TypeScript

4http://es6-

features.org/#Constants

4https://github.com/lukehoban/

es6features 4ES7(2016)

Exp operator

4ES8 (2017)

Asynch Functions

4ES9 (2018)

(10)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

Környezet

4git 4npm 4gulp 4babel 4eslint

(11)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

GIT

4A mai legnépszerűbb verziókezelés

Nemlineáris fejlesztés (ágak)

Elosztott fejelsztés (saját repo)

Nyílt repók (pl.: GitHub)

4.gitingnore

(12)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

NPM

4Node.JS csomagkezelő 4node_modules

4packages.json

(13)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

GRUNT

4Kötegelt feladatok

(14)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

BABEL

4ES5 van telepítve 4Transcompiler

(15)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

ESLINT

4Kódolási szabályok betartása 4esLintrc

(16)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

Read-Eval-Print-Loop (REPL)

4Node.JS

ctrl + c adott parancs

befejezése

2 x ctrl + c Node:JS befejezése

(17)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

JavaScript futtató környezet

(18)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

ES5

4Szkóp

4Globális szkóp 4Blokk szkóp

4Változó deklarálás 4Modulok

4Névterek

4Függvények 4Zárványok

4Függvény emelés 4Függvény mint

objektum

4Függvény kifejezés 4This

4IIFE

(19)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

Szkóp

4Hierarchikus egységbe zárás

4Láthatóságot, élettartamot szabályozza

Futtatási környezet

4Lexikus vs Dinamikus szkóp 4Lexikus szkóp

Globális szkóp

Blokk szkóp

Függvény szkóp

(20)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

Globális szkóp

4A szkóp hierarchia alapja

4Amit itt deklarálunk az minden szkópban látszódik

Nem célszerű

(21)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

Blokk szkóp

4let és const segítségével blokk szkópban deklarálunk változókat

4változók elfedése

(22)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

Változó deklarálás

4lexical-scoping – block-scoping

let

const

4var

(23)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

Deklarálás

4let – csak a deklarálás helyétől létezik 4var – adott szkópon belül bárhol létezik

emelés - hoisting

(24)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

Modulok

4A modulok saját szkóppal bírnak

4Deklaratívak, export/ipmort segítségével kezeljük a függőségeket

4Az osztálybetöltő oldja fel a függőségeket

(25)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

Modul feloldás

4A fordítónak meg kell állapítania, hogy az import-ban definiált elemeket honnan

töltse be

4Klasszikus stratégia (relatív) 4Node stratégia

(26)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

Modul betöltő

4Értelmezés: Az megvalósítás megvizsgálja a kódot, hibaellenőrzés.

4Betöltés: Rekurzív módon betölti az össze hivatkozott modult

4Linkelés: Minden most betöltött modul a megvalósítás egy modul szkópot hoz létre és oda köti az összes a modulban megadott függőséget (itt jöhet az, hogy egy modulból olyan tagot kellene beimportálni ami ott

nincs exportálva)

4Futási idő: Lefuttatja a kifejezéseket a létrehoztt modulok belsejében

(27)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

JS modul rendszer

4Nincs saját szabvány (ES5) 4CommonJS

Szinkron (nincs lazy loading)

Egy fájl/modul

4Asynchronous Module Definition (AMD)

Aszinkron betöltés

4SystemJS (CommonJS + AMD) 4ES2017

Szinkron és aszinkron

(28)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

Névterek

4A belső modulokat névtereknek nevezzük

(29)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

Függvények

4A JavaScript alapja

4Osztályok, információ elrejtés, modulok alapja

4Nevesített 4Anonyom

4Változó elkapás

(30)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

Függvények, Zárványok

4 A függvények a definiálási helytől eltérő helyeken is futtathatóak 4 Egyszerű esetben minden függvény globális szkópú és nem

hivatkozik a globális szkópra

4 A modern JS megközelítésben bárhol definiálhatunk függvényeket és ezek változóknak is értékül adhatóak

4 Ilyen célra leginkább closure-t (zárványt) használnak 4 Ahol létrehoztuk ahhoz hozzáfér !!!!!

(31)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

Függvény emelés

4Hasonlóan a var változókhoz a függvény

deklarációk is az adott szkóp elejére lesznek rendezve

4TDZ – Temporal Dead Zone

A let-tel deklarált változók csak a deklarálás helyétől élnek

Probléma a klasszikus van-e ilyen változó kereséssel

(32)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

Függvények

4 Elsőosztályú elemek

Hivatkozhatunk rá

Meghívhatjuk

4 Primitív argumentumokat érték szerint adja át

4 Objektumokat referencia szerint (de egy új változót készít)

4 Nem különbözteti meg a

függvényeket az argumentum lista alapján (undefined ha nincs ilyen)

(33)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

Függvények

4Argumentumok destruktúrálása 4Kiterjesztés

4Alapéretlmezett értékek

(34)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

Függvény mint objektum paraméter

4Metódus

4This (ha ott hívjuk)

(35)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

Függvény kifejezések

4Speciális THIS kezelés

call

apply

bind

(36)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

this kontextus

(37)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

IIFE

4Immediately Invoked Function Expressions 4A deklarálás helyén azonnal le is fut

4A benne deklarált változók nem láthatóak kívülről

(38)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

4JavaScript OO

ES6

4Osztályok 4Objektumok 4Osztályok

függvények 4Prototípus

4Függvény kifejezés 4Objektumok

(39)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

JavaScript OOP

4Objektumok – konténerek

Tulajdonság listázás

4Dinamikus tulajdonságok – hozzáférés vezérlés

(40)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

Osztályok

4A JavaScript függvény és prototípus alapú öröklődéssel kezeli az

újrafelhasználható komponenseket

(41)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

objektumok

4Komplex adastruktúrák

tulajdonságok (név/érték)

dinamikus

(42)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

Az osztályok függvények

(43)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

Prototípus

4Minden metódusnak van prototípus tulajdonsága 4Az osztály adott példányához tartozó

metódusokat prototípusnak nevezük 4Dinamikus kiosztás

A meghívott metódust/adattagot a hierarchia mentén próbálja megtalálni

(44)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

Függvény kifejezések

4Nyíl jelölés

This mint környezeti változó is továbbadódik

Kihagyhatjuk a function szavat

Ha egy argumentuma van akkor kihagyhatjuk a

zárójelet

Ha a törzs egy kifejezés akkor kihagyhatjuk a kapcsos zárójelet és a return kifejezést

(45)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

objektumok

4Number, String, Boolean

4Speciális értékeket tárolnak 4Segédfüggvényeket adnak

(46)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

TypeScript

4Típus következtetés 4Interfészek

4Egyszerű típusok 4Számok

4Karekterláncok 4Null, undefined

4Tömbök

4Destruktúrálás 4Szimbólumok 4Mixin

(47)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

Egyszerű típusok 1.

4Boolean 4Number 4String

Sablonok

(48)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

Számok

4Ábrázolás (double)

„IEEE-764 double-precision floating-point”

0.1 + 0.2 = 0.30000000000000004

(49)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

Karakterláncok

4Többsoros karakterláncok

(50)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

Számok és karakterláncok

4Automatikus konverzió

(51)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

Karakterláncok

4Unicode szöveg

4Szöveg vs. utasítás

escape - \

speciális karakterek (\n, \t,\uXXXX…)

4Sablonok

Összefűzés

Interpoláció

(52)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

Egyszerű típusok 2.

4Array 4Tuple

(53)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

Egyszerű típusok 3.

4Enum 4Any 4Void

(54)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

Egyszerű típusok 4.

4Null és Undefined 4Never

4Típus kényszerítés

(55)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

null, undefined

4Speciális típusok

4Valaminek a hiányát jelzik

null a programozónak van szánva

Undefined a kereterendszernek szól

(56)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

Tömbök

4Sorbarendezett elemek halmaza

Heterogén

Tetszőleges elekészlet

Nulla első indexű

(57)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

Tömbök használata

4Adott metódusok az eredeti tömböt míg mások egy másolatot adnak vissza

(58)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

Metódusok

(59)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

Típus következtetés

4Alap következtetés

4Legjobb közös típus (Object) 4Kontextus alapú típus

(60)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

Típus kompatibilitás

4A típus kompatbilitás a struktúrális, alak szerinti típusosságon alapul (Java

nominális)

4x akkor kompatibilis y-nal, ha y-nak van legalább az x tagjai is megvannak

(61)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

Interfészek

4Typescript: legalább egy tulajdonság megvan (csak az alak számít)

(62)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

Destruktúrálás

4Tömb destrúrálás

4Objektum destrúrálás 4Tulajdonság átnevezés 4Szétkenés

(63)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

Szimbólumok

4Egyedi jelek

Amikor létrehozzuk egyedi

Primitív típus

4Jól ismert szimbólumok

(64)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

Mixin

4Az OO paradigma mellett egy másik népszerű megközelítés az osztályok kombinálása

(65)

UNIVERSITY OF SZEGED Department of Software EngineeringSITAS SCIENTIARUM SZEGEDIENSIS

Szigorú mód

4ES5 megengedi az implicit globális változók használatát

Ha egy változót elfelejtettünk deklarálni, de használni szeretnénk akkor gyárt egy

globálisat!!!

4A szigorú mód nem engedi meg ezt

use strict (szkóp szintű)

(66)

UNIVERSITY OF SZEGED Department of Software EngineeringIVERSITAS SCIENTIARUM SZEGEDIENSIS

Összefoglaló

4JavaScript Fejlesztés 4Áttekintés

4ES5

4ES6 - TypeScript

Hivatkozások

KAPCSOLÓDÓ DOKUMENTUMOK

UNIVERSITY OF SZEGED Department of Software Engineering VERSITAS SCIENTIARUM SZEGEDIENSIS..

UNIVERSITY OF SZEGED Department of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS6.

UNIVERSITY OF SZEGED Department of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS.. Mobil alkalmazásfejlesztés - UI alapok

UNIVERSITY OF SZEGED Department of Software Engineering IVERSITAS SCIENTIARUM SZEGEDIENSIS.. Mobil alkalmazásfejlesztés -

UNIVERSITY OF SZEGED Department of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS.. Mobil alkalmazásfejlesztés -

UNIVERSITY OF SZEGED Department of Software Engineering SITAS SCIENTIARUM SZEGEDIENSIS setMinimumLatency(long minLatencyMillis). ● A befejezés előtt megvárt minimális

UNIVERSITY OF SZEGED Department of Software Engineering SITAS SCIENTIARUM SZEGEDIENSIS.. Mobil alkalmazásfejlesztés

UNIVERSITY OF SZEGED Department of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS.. Apple Swift alapú