Migrare codice JavaScript a TypeScript strict senza rompere nulla

Converti un file o modulo JavaScript in TypeScript con tipi dedotti dall’uso reale, un tsconfig consigliato, l’elenco dei bug scoperti dai tipi e un piano per il resto del progetto. Pensato per ChatGPT, Claude, Gemini e Microsoft Copilot. Include 4 variabili personalizzabili e puoi copiarlo gratuitamente con un clic.

Intermedio · Codice · In attesa di revisione editoriale

Prompt

Agisci come ingegnere TypeScript senior che ha migrato grandi codebase JavaScript in modo incrementale.

Contesto:
- Codice da migrare: {{codice_js}}
- Progetto e strumenti di build: {{progetto}}
- Livello di rigore: {{rigore}}
- Ambiente di esecuzione: {{ambiente}}

Se il codice importa moduli che non ho mostrato o riceve dati di forma poco chiara, chiedimelo prima di inventare tipi.

Consegna:
1. Un tsconfig.json consigliato per {{rigore}}, spiegando le opzioni chiave (strict, noUncheckedIndexedAccess, allowJs, checkJs, module e moduleResolution in base al build).
2. Il codice convertito in TypeScript, con tipi e interfacce dedotti dall'uso reale. Segna ogni tipo ipotizzato con un commento `// IPOTESI:`.
3. I dati esterni (risposte API, localStorage, JSON) tipizzati come `unknown` e validati o ristretti prima dell'uso.
4. L'elenco di bug o comportamenti dubbi emersi grazie ai tipi (possibili undefined, confronti tra tipi diversi, argomenti opzionali gestiti male), con riga e correzione proposta, separato dalla conversione.
5. I pacchetti @types necessari e le modifiche agli script del package.json o alla configurazione di ESLint.
6. Un piano per migrare il resto del progetto: ordine dei file (dalle foglie alla radice), convivenza con JS durante la transizione e come evitare che tornino gli `any`.

Vincoli:
- Mantieni esattamente il comportamento; non rifattorizzare la logica nello stesso passaggio.
- Vietati `any`, `as any`, `@ts-ignore` e asserzioni non-null `!` senza una giustificazione scritta.
- Se una correzione cambia il comportamento, proponila a parte senza applicarla.
- Usa [DA COMPLETARE] per ciò che non si può dedurre.

Formato: tsconfig, codice convertito, elenco dei rilievi e piano, ognuno nella propria sezione.

Come usarlo

  1. Parti da un file piccolo con poche dipendenze e incollalo intero. 2. Indica bundler o framework e il rigore desiderato. 3. Controlla i commenti IPOTESI, esegui tsc --noEmit e i test, poi ripeti file per file.

Esempio d'uso

Codice: utils/carrello.js con calcolo di totali e IVA · Progetto: React con Vite ed ESLint · Rigore: graduale · Ambiente: browser.

Esempio di risultato

tsconfig.json (opzioni chiave)

"strict": true, "allowJs": true, "checkJs": true, "noUncheckedIndexedAccess": true e "moduleResolution": "bundler" (adatto a Vite). Così il JS rimanente viene controllato mentre migri un file alla volta.

utils/carrello.ts

// IPOTESI: forma dedotta dall'uso nel file originale
export interface ArticoloCarrello {
  readonly id: string;
  prezzo: number;
  quantita: number;
}

export function totaleCarrello(articoli: readonly ArticoloCarrello[], scontoPct = 0): number {
  const subtotale = articoli.reduce((somma, a) => somma + a.prezzo * a.quantita, 0);
  return subtotale * (1 - scontoPct / 100);
}

export function caricaCarrello(): ArticoloCarrello[] {
  const grezzo: unknown = JSON.parse(localStorage.getItem('carrello') ?? '[]');
  return Array.isArray(grezzo) ? grezzo.filter(isArticoloCarrello) : [];
}

function isArticoloCarrello(valore: unknown): valore is ArticoloCarrello {
  if (typeof valore !== 'object' || valore === null) return false;
  const v = valore as Record<string, unknown>;
  return typeof v.id === 'string' && typeof v.prezzo === 'number' && typeof v.quantita === 'number';
}

Problemi emersi (non applicati)

RigaProblemaProposta
[DA COMPLETARE]JSON.parse lancia un'eccezione se il dato salvato è corrottoRacchiudere in try/catch e restituire []
[DA COMPLETARE]sconto a volte arrivava come stringa dal formConvertire con Number() al confine

…

Dati chiave

Categoria
Programmazione e sviluppo · TypeScript
Tipo di output
Codice
Livello
Intermedio
Pensato per
ChatGPT, Claude, Gemini e Microsoft Copilot
Verificato in
In attesa di verifica editoriale
Variabili
Codice JavaScript, Progetto e build, Livello di rigore e Ambiente di esecuzione
Lingua
Italiano
Prezzo
Gratuito, senza registrazione
Aggiornato
07/11/2026

Domande frequenti

Migro tutto in una volta o un po’ alla volta?

Un po’ alla volta, in quasi tutti i progetti. Con allowJs converti un file alla volta partendo da quelli senza dipendenze, e attivi le opzioni strict quando la maggior parte è tipizzata.

Perché usare unknown invece di any per i dati esterni?

Perché unknown ti obbliga a controllare la forma dei dati prima di usarli, mentre any disattiva il controllo. Per le risposte API conviene una validazione a runtime, ad esempio con Zod.

La migrazione può cambiare il comportamento del codice?

Non dovrebbe. Il prompt separa la conversione dai bug emersi grazie ai tipi, così decidi tu cosa correggere e lo testi a parte.

A cosa serve questo prompt?

Converti un file o modulo JavaScript in TypeScript con tipi dedotti dall’uso reale, un tsconfig consigliato, l’elenco dei bug scoperti dai tipi e un piano per il resto del progetto.

Con quali strumenti di IA funziona?

È pensato per ChatGPT, Claude, Gemini e Microsoft Copilot. Non lo abbiamo ancora verificato in questi strumenti, quindi i risultati possono variare da uno all'altro.

Come personalizzo il prompt?

Clicca su «Personalizza» e compila le variabili (Codice JavaScript, Progetto e build, Livello di rigore e Ambiente di esecuzione). Il testo si aggiorna all'istante e poi puoi copiarlo con un clic. I valori vengono salvati solo nel tuo browser.

Serve esperienza per usarlo?

È di livello intermedio: conviene conoscere l'argomento per fornire un buon contesto e valutare il risultato con occhio critico.

Questo prompt è gratuito?

Sì. Tutti i prompt di HomeCasa Prompts sono gratuiti, senza registrazione né abbonamento. Puoi usarli anche in progetti professionali.

Posso fidarmi dell'output dell'IA?

Consideralo una bozza di alta qualità: verifica sempre dati, cifre e affermazioni importanti prima di pubblicare o prendere decisioni.

Prompt correlati