ReactJS - Statische Typüberprüfung

Hallo da draußen, zukünftige React-Entwickler! Heute machen wir uns auf eine aufregende Reise in die Welt der statischen Typüberprüfung in ReactJS. Als dein freundlicherNachbarchaftsinformatiklehrer bin ich hier, um dich durch dieses wichtige Konzept Schritt für Schritt zu führen. Keine Sorge, wenn du neu im Programmieren bist – wir beginnen mit den Grundlagen und arbeiten uns hoch!

ReactJS - Static Type Checking

Was ist Statische Typüberprüfung?

Bevor wir uns den Details von ReactJS zuwenden, lassen Sie uns verstehen, was statische Typüberprüfung überhaupt ist. Stell dir vor, du backst einen Kuchen. Du würdest kein Salz statt Zucker verwenden, oder? Weil du weißt, welche Zutat du brauchst. Statische Typüberprüfung ist ähnlich – sie hilft uns, die richtigen Datentypen in unserem Code zu verwenden.

In der Programmierung ist die statische Typüberprüfung ein Prozess, der die Typen unserer Variablen, Funktion参数 und Rückgabewerte überprüft, bevor der Code ausgeführt wird. Es ist, als hätte man einen hilfreichen Freund, der dein Rezept doppelt überprüft, bevor du anfängst zu backen!

Warum Statische Typüberprüfung in React verwenden?

Nun, du fragst dich vielleicht, "Warum brauchen wir das in React?" Lass mich dir eine kleine Geschichte erzählen. Es war einmal, in einem Land weit, weit entfernt (ok, es war nur in meinem letzten Job), hatten wir ein großes React-Projekt. Alles schien in Ordnung, bis wir plötzlich komische Fehler im Produktionsbetrieb bekamen. Es stellte sich heraus, dass wir die falschen Datentypen an einige Komponenten übergeben haben. Wenn wir nur statische Typüberprüfung verwendet hätten, hätten wir diese Probleme frühzeitig erkannt!

Statische Typüberprüfung in React hilft uns:

  1. Fehler früh im Entwicklungsprozess zu fangen
  2. Den Code-Qualität und Lesbarkeit zu verbessern
  3. Bessere Dokumentation bereitzustellen
  4. Das Entwicklungserlebnis durch besseres Autovervollständigen zu verbessern

Einführung in Flow

Nun, da wir wissen, warum statische Typüberprüfung wichtig ist, lassen Sie uns unseren neuen Freund kennenlernen: Flow. Flow ist ein statischer Typprüfer für JavaScript, entwickelt von Facebook (den gleichen Leuten, die uns React gegeben haben). Es ist wie ein Superheld für deinen Code, der typbezogene Probleme feststellt, bevor sie zu Problemen werden!

Einrichtung von Flow in einem React-Projekt

Lassen Sie uns praktisch werden und Flow in einem React-Projekt einrichten. Keine Sorge, ich werde dich durch jeden Schritt führen!

  1. Zuerst erstellen wir ein neues React-Projekt:
npx create-react-app my-flow-app
cd my-flow-app
  1. Installieren wir Flow:
npm install --save-dev flow-bin
  1. Fügen wir ein Flow-Skript zu deiner package.json hinzu:
{
"scripts": {
"flow": "flow"
}
}
  1. Initialisieren wir Flow:
npm run flow init

Dies erstellt eine .flowconfig Datei in deinem Projektverzeichnis.

  1. Füge // @flow an die Oberseite jeder Datei ein, die du von Flow überprüfen lassen möchtest.

Verwendung von Flow in React-Komponenten

Nun, da wir Flow eingerichtet haben, sehen wir uns an, wie wir es in unseren React-Komponenten verwenden können. Wir beginnen mit einem einfachen Beispiel:

// @flow
import React from 'react';

type Props = {
name: string,
age: number
};

function Greeting({ name, age }: Props) {
return <h1>Hello, {name}! You are {age} years old.</h1>;
}

export default Greeting;

Lassen Sie uns das aufschlüsseln:

  • // @flow oben gibt Flow Bescheid, dass es diese Datei überprüfen soll.
  • Wir definieren einen Props-Typ mit name als String und age als Zahl.
  • In den Funktion参数 verwenden wir : Props, um Flow mitzuteilen, dass diese Funktion Props des Typs Props erwartet.

Wenn wir diese Komponente falsch verwenden, wird Flow uns warnen:

// Dies verursacht einen Flow-Fehler
<Greeting name={42} age="twenty" />

Flow wird uns mitteilen, dass wir versuchen, eine Zahl für name (welche eine Zeichenkette sein sollte) und eine Zeichenkette für age (welche eine Zahl sein sollte) zu übergeben.

Flow mit React-State

Flow kann uns auch bei Reacts State helfen. Hier ist ein Beispiel:

// @flow
import React, { useState } from 'react';

type State = {
count: number
};

function Counter() {
const [state, setState] = useState<State>({ count: 0 });

const increment = () => {
setState(prevState => ({ count: prevState.count + 1 }));
};

return (
<div>
<p>Count: {state.count}</p>
<button onClick={increment}>Increment</button>
</div>
);
}

export default Counter;

In diesem Beispiel:

  • Wir definieren einen State-Typ mit einer count-Eigenschaft des Typs Zahl.
  • Wir verwenden useState<State>, um Flow mitzuteilen, dass unser State dem State-Typ entsprechen soll.

Flow mit React-Props

Schauen wir uns ein komplexeres Beispiel mit Props an:

// @flow
import React from 'react';

type Props = {
items: Array<string>,
onItemClick: (item: string) => void
};

function ItemList({ items, onItemClick }: Props) {
return (
<ul>
{items.map((item, index) => (
<li key={index} onClick={() => onItemClick(item)}>
{item}
</li>
))}
</ul>
);
}

export default ItemList;

Hier ist, was passiert:

  • Wir definieren Props mit einer items-Array von Zeichenketten und einer onItemClick-Funktion, die eine Zeichenkette annimmt und nichts zurückgibt (void).
  • Flow stellt sicher, dass wir die richtigen Typen von Props übergeben, wenn wir diese Komponente verwenden.

Flow-Methode-Tabelle

Hier ist eine Tabelle mit einigen häufig verwendeten Flow-Methoden, die du in React verwenden wirst:

Methode Beschreibung Beispiel
type Definiert einen neuen Typ type Props = { name: string };
interface Definiert eine neue Schnittstelle interface User { name: string, age: number }
$ReadOnly<T> Macht alle Eigenschaften in T schreibgeschützt type Props = $ReadOnly<{ name: string }>;
$Shape<T> Macht alle Eigenschaften in T optional type PartialUser = $Shape<User>;
$ElementType<T, K> Bekommt den Typ eines Elements in einem Array oder Objekt type Name = $ElementType<User, 'name'>;
$Keys<T> Bekommt eine Typenunion aller Schlüssel in T type UserKeys = $Keys<User>;
$Values<T> Bekommt eine Typenunion aller Werte in T type UserValues = $Values<User>;

Schlussfolgerung

Und das war's, Leute! Wir haben unsere ersten Schritte in die Welt der statischen Typüberprüfung mit Flow in React unternommen. Denke daran, wie bei jeder neuen Fähigkeit, mag es am Anfang etwas herausfordernd erscheinen. Aber mit Übung werdet ihr feststellen, dass Flow ein unschätzbares Werkzeug in eurem React-Entwicklungswerkzeugkasten wird.

Statische Typüberprüfung mag jetzt wie zusätzliche Arbeit erscheinen, aber glaubt mir, zukünftiges du wird aktuellen dir danken für das Fangen dieser lästigen Typfehler, bevor sie zu Laufzeitfehlern werden!

Weiter codieren, weiter lernen und vor allem Spaß haben! React mit Flow ist wie das Besitzen eines Superkräfte – nutzt es weise, und euer Code wird stärker, sicherer und leichter zu verstehen sein. Bis zum nächsten Mal, fröhliches Coden!

Credits: Image by storyset