Skip to content
This repository has been archived by the owner on Sep 15, 2022. It is now read-only.

lrosenfeldt/fend-typescript-demo

Repository files navigation

TypeScript Crashkurs 2022

Dieser Crashkurs wurde im Frühjahr 2022 im Rahmen des Frontend Developer Programms (FEND) von opencampus gehalten. Dieses Repo ist nur noch als Referenz online und wird nicht mehr bearbeitet. Im main-Branch findet man den Stand vor der Migrierung zu TypeScript, der Stand nach der Migrierung ist im Branch talk festgehalten.

Was ist TypeScript?

TypeScript is a language for application-scale JavaScript. TypeScript adds optional types to JavaScript that support tools for large-scale JavaScript applications for any browser, for any host, on any OS. TypeScript compiles to readable, standards-based JavaScript

TypeScript ist eine Programmiersprache, die JavaScript um ein statisches Typ-System erweitert. TypeScript-Code kann nicht vom Browser oder von Node ausgeführt werden, stattdessen wird der Code auf korrekte Verwendung der Typen überprüft und anschließend zu JavaScript kompiliert.

Warum TypeScript?

TypeScript verbessert vor allem die Developer Experience 👩‍💻 und findet nebenbei Bugs🐛!

  • 🔥 Autocompletion
  • 🔍 findet Fehler, damit ihr es nicht tun müsst
  • 📄 "dokumentiert" euren Code

Part I - Einführung in TypeScript 🚀

JavaScript ist nicht perfekt

function sum(arr) {
  return arr.reduce((currentSum, num) => currentSum + num);
}

// was kommt hier wohl raus?
const sumResult = sum([3, 3, "3"]);
console.log(sumResult);

// finde den Fehler
// wir wollen: "HI MUM!"
const shoutHi = "Hi Mum!   ".trimsEnd().toLocalUppercase();
console.log(shoutHi);

Check out the TypeScript Playground!

Part II - React & TypeScript ❤️

Migration zu TypeScript

Eigentlich alle modernen Bundler (parcel, webpack, vite, ...) können ein Projekt direkt mit TypeScript aufsetzen. Nachträglich ist etwas mehr arbeitet erforderlich.

Wie man ein React + Vite Projekt zu TypeScript migriert:

  1. Installiere TypeScript als Dev-Dependency: yarn add -D typescript

  2. Füge die nötigen Config-Files hinzu. Diese können aus .config kopiert werden. ⚠️ tsconfig.json und tsconfig.node.json müssen im Root Verzeichnis landen (wo auch euer package.json liegt). vite-env.d.ts muss in src/ liegen.

cp .configs/tsconfig.json .configs/tsconfig.node.json .
cp .configs/vite-env.d.ts src/
  1. React ist nicht in TypeScript geschrieben. Die Types kann man sich aber manuell vom Definitely Typed holen. yarn add -D @types/react

  2. Die Vite-Config kann als TypeScript-File angelegt. Dazu die Endung von .js zu .ts ändern. Dann werden allerdings die Types für node benötigt: yarn add --dev @types/node.

Let's Go!

Damit VS Code etwas als TypeScript-Code erkennt, muss die Datei-Endung geändert werden:

.js -> .ts
.jsx -> .tsx

GraphQL Codegen

In GraphQL sind bereits definiert, sodass die Types für TypeScript (und weitere Programmiersprachen mit statistischen Typen) automatisch erzeugt werden können. Der Standard dafür ist inzwischen GraphQL Code Generator. Ein Tutorial für React, Apollo, Typescript findet ihr auch auf der Webseite.

  1. GraphQL-Code-Generator installieren für TypeScript, React, Apollo:
yarn add -D @graphql-codegen/cli @graphql-codegen/typescript @graphql-codegen/typescript-operations @graphql-codegen/typescript-react-apollo @graphql-codegen/introspection
  1. GraphQL-Code-Generator initialisieren:
yarn graphql-codegen init
# interaktiv
# ? What type of application are you building? Application built with React
# ? Where is your schema?: https://api-eu-central-1.graphcms.com/v2/cl3d189141hkk01xpcesz7a2l/master # hier muss euer GraphQL-Endpunkt rein
# ? Pick plugins: # einfach ja, die Plugins haben wir vorher schon ausgewählt
# ? Where to write the output: src/generated/graphql.tsx
# ? Do you want to generate an introspection file? Yes
# ? How to name the config file? codegen.yml
# ? What script in package.json should run the codegen? codegen
  1. Füge einen graphql/ mit .graphql-Files mit euren Queries hinzu. Alle eure Queries landen dann in diesen Files. Codegen generiert alle Types und Hooks. Ihr müsst nur noch importieren und nichts doppelt pflegen.

  2. Optional: Fügt die GraphQL-Extension mquandalle.graphzu VS Code für Syntax-Highlighting in .graphql-Files hinzu.

Ressourcen 📚

Die Zukunft von TypeScript!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published