JavaScript-Code ohne Brüche nach striktem TypeScript migrieren
Wandle eine JavaScript-Datei oder ein Modul in TypeScript um, mit aus der Nutzung abgeleiteten Typen, empfohlener tsconfig, einer Liste aufgedeckter Bugs und einem Plan für den Rest. Entwickelt für ChatGPT, Claude, Gemini und Microsoft Copilot. Er enthält 4 anpassbare Variablen und lässt sich kostenlos mit einem Klick kopieren.
Fortgeschritten · Code · Redaktionelle Prüfung ausstehend
Prompt
Arbeite als Senior-TypeScript-Entwickler, der große JavaScript-Codebasen schrittweise migriert hat.
Kontext:
- Zu migrierender Code: {{js_code}}
- Projekt und Build-Tools: {{projekt}}
- Strenge: {{strenge}}
- Laufzeitumgebung: {{laufzeit}}
Wenn der Code Module importiert, die ich nicht gezeigt habe, oder Daten mit unklarer Struktur erhält, frag nach, bevor du Typen erfindest.
Liefere:
1. Eine empfohlene tsconfig.json für {{strenge}} mit Erklärung der wichtigsten Optionen (strict, noUncheckedIndexedAccess, allowJs, checkJs, module und moduleResolution passend zum Build).
2. Den nach TypeScript konvertierten Code mit Typen und Interfaces, abgeleitet aus der tatsächlichen Nutzung. Markiere jeden geschätzten Typ mit einem Kommentar `// ANNAHME:`.
3. Externe Daten (API-Antworten, localStorage, JSON) als `unknown` typisiert und vor der Nutzung validiert oder eingeengt.
4. Eine Liste der Bugs oder fragwürdigen Stellen, die die Typen aufdecken (mögliches undefined, Vergleiche verschiedener Typen, falsch behandelte optionale Argumente), mit Zeile und Korrekturvorschlag, getrennt von der Konvertierung.
5. Nötige @types-Pakete und Änderungen an package.json-Skripten oder der ESLint-Konfiguration.
6. Einen Plan für den Rest des Projekts: Reihenfolge der Dateien (von den Blättern zur Wurzel), Koexistenz mit JS während der Umstellung und wie man verhindert, dass `any` zurückkehrt.
Vorgaben:
- Verhalten exakt beibehalten; keine Logik im selben Schritt refaktorisieren.
- Kein `any`, `as any`, `@ts-ignore` oder Non-Null-Assertion `!` ohne schriftliche Begründung.
- Ändert eine Korrektur das Verhalten, schlag sie separat vor und wende sie nicht an.
- Nutze [AUSFÜLLEN] für alles, was sich nicht ableiten lässt.
Format: tsconfig, konvertierter Code, Befundliste und Plan, jeweils in eigenem Abschnitt.So verwenden Sie ihn
- Beginne mit einer kleinen Datei mit wenigen Abhängigkeiten und füge sie vollständig ein. 2. Nenne Bundler oder Framework und die gewünschte Strenge. 3. Prüfe die ANNAHME-Kommentare, führe tsc --noEmit und die Tests aus und wiederhole das Datei für Datei.
Anwendungsbeispiel
Code: utils/warenkorb.js mit Summen- und Mehrwertsteuerberechnung · Projekt: React mit Vite und ESLint · Strenge: schrittweise · Laufzeit: Browser.
Beispielergebnis
tsconfig.json (wichtige Optionen)
"strict": true, "allowJs": true, "checkJs": true, "noUncheckedIndexedAccess": true und "moduleResolution": "bundler" (passt zu Vite). So wird das restliche JS geprüft, während Sie Datei für Datei migrieren.
utils/warenkorb.ts
// ANNAHME: Struktur aus der Verwendung in der Originaldatei abgeleitet
export interface WarenkorbArtikel {
readonly id: string;
preis: number;
menge: number;
}
export function warenkorbSumme(artikel: readonly WarenkorbArtikel[], rabattProzent = 0): number {
const zwischensumme = artikel.reduce((summe, a) => summe + a.preis * a.menge, 0);
return zwischensumme * (1 - rabattProzent / 100);
}
export function warenkorbLaden(): WarenkorbArtikel[] {
const roh: unknown = JSON.parse(localStorage.getItem('warenkorb') ?? '[]');
return Array.isArray(roh) ? roh.filter(istWarenkorbArtikel) : [];
}
function istWarenkorbArtikel(wert: unknown): wert is WarenkorbArtikel {
if (typeof wert !== 'object' || wert === null) return false;
const v = wert as Record<string, unknown>;
return typeof v.id === 'string' && typeof v.preis === 'number' && typeof v.menge === 'number';
}
Befunde (nicht angewendet)
| Zeile | Problem | Vorschlag |
|---|---|---|
| [AUSFÜLLEN] | JSON.parse wirft bei beschädigten gespeicherten Daten | In try/catch einschließen und [] zurückgeben |
| [AUSFÜLLEN] | rabatt kam aus dem Formular teils als String an | An der Grenze mit Number() umwandeln |
…
Wichtige Fakten
- Kategorie
- Programmierung & Entwicklung · TypeScript
- Ausgabetyp
- Code
- Niveau
- Fortgeschritten
- Entwickelt für
- ChatGPT, Claude, Gemini und Microsoft Copilot
- Verifiziert in
- Redaktionelle Prüfung ausstehend
- Variablen
- JavaScript-Code, Projekt und Build, Strenge und Laufzeitumgebung
- Sprache
- Deutsch
- Preis
- Kostenlos, ohne Anmeldung
- Aktualisiert
- 07.11.2026
Häufig gestellte Fragen
Alles auf einmal migrieren oder schrittweise?
In fast allen Projekten schrittweise. Mit allowJs konvertierst du Datei für Datei, beginnend mit Dateien ohne Abhängigkeiten, und schaltest strikte Optionen ein, wenn der Großteil typisiert ist.
Warum unknown statt any für externe Daten?
Weil unknown dich zwingt, die Struktur zu prüfen, bevor du die Daten nutzt, während any die Prüfung abschaltet. API-Antworten validierst du am besten zur Laufzeit, etwa mit Zod.
Kann die Migration das Verhalten meines Codes ändern?
Sollte sie nicht. Der Prompt trennt die Konvertierung von den aufgedeckten Bugs, damit du selbst entscheidest, was du korrigierst, und es separat testest.
Wofür ist dieser Prompt gedacht?
Wandle eine JavaScript-Datei oder ein Modul in TypeScript um, mit aus der Nutzung abgeleiteten Typen, empfohlener tsconfig, einer Liste aufgedeckter Bugs und einem Plan für den Rest.
Mit welchen KI-Tools funktioniert er?
Er ist für ChatGPT, Claude, Gemini und Microsoft Copilot entwickelt. Wir haben ihn in diesen Tools noch nicht überprüft, daher können die Ergebnisse variieren.
Wie passe ich den Prompt an?
Klicken Sie auf „Anpassen“ und füllen Sie die Variablen aus (JavaScript-Code, Projekt und Build, Strenge und Laufzeitumgebung). Der Text wird sofort aktualisiert und lässt sich anschließend mit einem Klick kopieren. Die Werte werden nur in Ihrem Browser gespeichert.
Brauche ich Erfahrung, um ihn zu verwenden?
Er ist für Fortgeschrittene: Es hilft, das Thema zu kennen, um guten Kontext zu liefern und das Ergebnis kritisch zu prüfen.
Ist dieser Prompt kostenlos?
Ja. Jeder Prompt von HomeCasa Prompts ist kostenlos, ohne Anmeldung und ohne Abonnement. Sie können ihn auch in beruflichen Projekten verwenden.
Kann ich der KI-Ausgabe vertrauen?
Betrachten Sie sie als hochwertigen Entwurf: Prüfen Sie Daten, Zahlen und wichtige Aussagen immer, bevor Sie etwas veröffentlichen oder Entscheidungen treffen.