\section{TypeScript / Next.js}

\begin{frame}{Mi az a TypeScript?}
  \begin{block}{JavaScript + típusok}
    A TypeScript a JavaScript egy \textbf{típusos kibővítése}: szintaktikailag ugyanolyan, de lehetővé teszi, hogy megmondjuk, egy változó szám-e, szöveg-e, vagy éppen egy konkrét adatstruktúra. A böngésző ezután sem érti --- fordításkor sima JavaScript-té alakul.
  \end{block}
\end{frame}

\begin{frame}{Miért TypeScript Reacthez?}
  \begin{itemize}
    \item \textbf{Korai hibajelzés:} a szerkesztő azonnal jelzi, ha rossz típusú props-ot adunk át egy komponensnek --- nem kell a böngészőben futtatni.
    \item \textbf{Öndokumentáló kód:} a props típusai rögtön megmondják, mit vár a komponens --- nincs szükség külön kommentre.
    \item \textbf{Karbantarthatóság:} refaktoráláskor a fordító jelzi, hol kell módosítani --- nagyobb változtatások biztonságosabbak.
    \item Kis projekten is megéri a tanulási görbéje, mert a hosszabb távú haszon jelentős.
  \end{itemize}
\end{frame}

\begin{frame}{Mi az a Next.js?}
  \begin{block}{React + szerver}
    A Next.js egy teljes React keretrendszer: beépített routing, szerveroldali renderelés (SSR), statikus oldalak generálása (SSG), képoptimalizálás, és más funkciók --- mindez konfiguráció nélkül.
  \end{block}
  \vspace{0.5em}
  \begin{itemize}
    \item \textbf{SSR (Server-Side Rendering):} a szerver minden kérésnél rendereli az oldalt --- friss adatok, jó SEO.
    \item \textbf{SSG (Static Site Generation):} build-időben generál HTML-t --- villámgyors, CDN-ről tálalható.
  \end{itemize}
\end{frame}

\begin{frame}{Mikor melyiket válasszuk?}
  \begin{itemize}
    \item \textbf{Vite + React (SPA):} admin felületek, dashboardok, belső eszközök --- ahol a SEO nem kritikus, a bejelentkezés után töltődik be a tartalom.
    \item \textbf{Next.js:} publikus weboldalak, e-commerce, blog, dokumentáció --- ahol a keres�'optimalizálás és a gyors els�' betöltés fontos.
    \item \textbf{Mindkét esetben ajánlott:} TypeScript, lint, automatikus tesztek, CI/CD csővezeték.
  \end{itemize}
\end{frame}
