Wann sollte man JSX.Element, ReactNode und ReactElement in TypeScript verwenden?
Hallo zusammen! Ich habe angefangen, React mit TypeScript zu lernen und bin auf Verwirrung bei den Typen für Rückgabewerte von Komponenten und Props gestoßen.
Hier ist eine einfache Komponente:
```typescript
interface Props {
children: ???; // Was soll hier hin?
icon: ???; // Und hier?
}
function Card({ children, icon }: Props) {
return (
{icon}
);
}
```
Ich habe in verschiedenen Projekten drei Typen gesehen: `JSX.Element`, `ReactNode` und `ReactElement`. Sie werden scheinbar für dasselbe verwendet, aber nicht ganz.
Zum Beispiel weiß ich, dass:
- `ReactNode` für children verwendet werden kann
- `JSX.Element` von funktionalen Komponenten zurückgegeben wird
- `ReactElement` der Basistyp ist
Aber wenn ich schreibe:
```typescript
function MyComponent(): JSX.Element
``` {children}