So funktionieren die erzeugten Typen
Die Props der Komponente sind als SVGProps<SVGSVGElement> typisiert – derselbe Typ, den React für das <svg>-Element verwendet. Dadurch bekommst du Autovervollständigung für alle SVG-Attribute und Event-Handler, und TypeScript lehnt ungültige Props schon beim Kompilieren ab.
Mit aktivierter size-Option werden die Props zu SVGProps<SVGSVGElement> & { size?: number | string }, und width sowie height werden aus size gesetzt. Mit forwardRef ist die Ref als Ref<SVGSVGElement> typisiert, sodass Elternkomponenten Refs für Messungen oder Animationsbibliotheken anhängen können.
Checkliste für die TSX-Ausgabe
Bevor du ein erzeugtes Icon committest, prüfe, dass:
- der Komponentenname in PascalCase ist und zum Dateinamen passt (ArrowLeft.tsx),
- SVGProps und Ref nur als Typen importiert werden und damit aus dem JavaScript-Bundle verschwinden,
- die viewBox vorhanden ist – ohne sie kann das Icon nicht skalieren,
- benannte Exporte verwendet werden, falls deine Codebasis Default-Exporte verbietet.
Strict-Mode-tauglich
Der Code kompiliert mit "strict": true und mit isolatedModules, wie es Next.js, Vite und esbuild verlangen. Es werden keine any-Typen erzeugt, und der Standardwert für size steht als Literal direkt im Destructuring-Muster.