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.