TypeScript tréning
szoftverfejlesztőknek
Célja, hogy megtanuld a JavaScript és TypeScript nyelv sajátosságait, megismerd a buktatóit, és biztonsággal használd React/Angular/Vue vagy egyéb frontend, ill. Node projektekben.
A tréning felépítése
A program 8-10 alkalomból áll, melyek egyenként 100-120 percesek. Heti 2 alkalom lesz 4-5 héten keresztül, kis létszámú csoportokban.
(Miért nem fix az alkalmak száma? Egyszerűen azért, mert a tartalom mennyisége fix, a haladás sebessége viszont a résztvevőktől függ.)
Neked való, ha…
- szoftverfejlesztőként dolgozol,
- még nem dolgoztál JavaScriptben és TypeScriptben,
- de tervezel TypeScriptben fejleszteni a közeljövőben frontenden vagy backenden.
Időpontok
Egyéni egyeztetés alapján indítjuk a csoportokat. Olyan időpontot választunk, ami megfelel neked.
A kihagyott alkalmakat mindenképpen pótolni kell, a pótló alkalmakat nem kell külön fizetni.
Tananyag
Egy kis ízelítő abból, hogy mikkel fogunk foglalkozni. A műsorváltozás jogát fenntartjuk, de nagyjából ez lesz.
Típusok és értékek
- mikor ugyanaz és mikor nagyon más a fordítási idejű (TypeScript) és a futási idejű (JavaScript) típusa egy értéknek?
- a 2 egész vagy lebegőpontos?
- miért van, hogy 9999999999999999 == 10000000000000000?
- egyenlő-e 1/0 és 1/-0?
- van-e olyan 10 hosszúságú tömb, aminek 5 eleme van?
- hogy lehet, hogy false == [], de Boolean([]) == true?
- melyik az egyetlen eset, amikor az == operátort érdemes használni?
- mikor tegyünk a sor elejére pontosvesszőt?
- mire kell vigyázni, ha boolean-né konvertálunk értékeket?
- mi lesz null?.x ?
- mi a property descriptor és a defineProperty, milyen beállításai vannak egy propertynek?
- hogy működik a getter és setter?
- hogyan kerüljük el a referencia szerinti átadásból eredő problémákat?
- mire jó a Set és a Map?
- hogyan menjünk végig egy objektum mezőin?
- mikor érdemes for(of) ciklust használni forEach helyett?
Függvények és osztályok
- igaz-e, hogy minden osztály függvény? és hogy minden függvény osztály?
- mi a __proto__ és mi a prototype?
- hogyan csináljunk változó paraméterszámú függvényt/metódust?
- csak osztálynak lehet metódusa, vagy objektumnak is? …vagy csak objektumnak?
- a this mikor nem az, amire gondolunk?
- miért ne szakítsunk le metódusokat, és mit csináljunk, ha mégis?
- scores[user.name]++ – milyen gond lesz, ha a usert úgy hívják, hogy “hasOwnProperty”? és ha úgy, hogy “__proto__”? mit használjunk ehelyett?
- mezők deklarálása és kezdeti értéke
- miért növekvő sorrendben írja ki a számokat az alábbi kód?
class A {
a = console.log(5)
constructor(d = console.log(7)) {console.log(8) }
b = console.log(6)
static x = console.log(1)
}
class B extends A {
constructor(y = console.log(3)) {
console.log(4); super(); console.log(10)
}
y = console.log(9)
static x = console.log(2)
}
new B()
- miért lehet a private mezőket az osztályon kívülről elérni? hogyan csináljunk tényleg privát változót?
- hogyan rövidítsük le a meződeklarációt?
REST API, JSON, típusok deklarálása
- fetch()
- interface
- type alias
- típusparaméterek
- unió
- metszet
- JSON.stringify()
- JSON.parse()
- JSON típusok deklarálása
- zod
Modulok, csomagok, npm
- npm, csomagok, környezeti változók
- modul-formátumok
- package.json
- npm add, install
- DefinitelyTyped, index.d.ts, @types
- npm run
- npm workspace
- turbo
- .env
Unit tesztelés és debugolás
- tesztek írása
- TDD technika
- debugger indítása
- breakpoint
- step into, step over
- restart frame
Clean code és refaktorálás, funkcionális stílus
- egységekre tagolás (függvény, )
- túl mély blokkstruktúrák elkerülése (if, if(!)return, switch-case)
- automata refaktorálások
- JSDoc
- kommentek használata
- formázás, térköz
- változóelnevezések
- boolean-eket a pozitív értelmébe használjuk
- enkapszuláció
- osztályok
- modulok
- függvény contract
- globális változók , nagy singleton objektumok
- immutable
- pure function
- const vs let
- map
- reduce
- immutable vs mutable
- immutable technikák
- separation of concerns
- squint testing
- úgy írni le, ami a legtermészetesebb kifejezése annak, amit csinálni akarunk x && console.log(x), if (array.length)
Hibakezelés és logolás, környezeti változók
- Error
- throw
- message, stack
- try { … } catch {}
- logger könyvtárak
Promise, hatékonyság
- thenable
- Promise
- catcher, .catch()
- unhandled rejection
- async await
- try { await } catch {}
- new Promise()
- performancia-kérdések
- számításintenzív algoritmusok
- Ordo
- párhuzamosítás, Node-féle event loop
- profilozás
- RTT
Mennyibe kerül?
Ha 2023 április 30-ig jelentkezel, 240.000 Ft a teljes képzés (30.000 Ft / alkalom az első 8 alkalomra, az esetleges plusz 1-2 alkalom ingyenes). Az ár áfamentes.
Csoportos kedvezmény: az első plusz ember, akit hozol 10%, a második 20%, stb., az 7. plusz ember 70%. 8-nál nagyobb létszámú csoport nem indul. A kedvezmény csak akkor érvényes, ha a csoport közös időpontban tartja az órát. A pótló alkalmakra nem vonatkozik, azokat teljes áron kell fizetni.