Migrer du code JavaScript vers TypeScript strict sans rien casser

Convertissez un fichier ou module JavaScript en TypeScript avec des types déduits de l’usage réel, un tsconfig recommandé, la liste des bugs révélés par les types et un plan pour la suite. Conçu pour ChatGPT, Claude, Gemini et Microsoft Copilot. Il comprend 4 variables personnalisables et vous pouvez le copier gratuitement en un clic.

Intermédiaire · Code · En attente de relecture éditoriale

Prompt

Agis comme un ingénieur TypeScript senior qui a migré de grandes bases de code JavaScript de façon progressive.

Contexte :
- Code à migrer : {{code_js}}
- Projet et outils de build : {{projet}}
- Niveau de rigueur : {{rigueur}}
- Environnement d'exécution : {{environnement}}

Si le code importe des modules que je n'ai pas montrés ou reçoit des données dont la forme n'est pas claire, demande-moi avant d'inventer des types.

Livrables :
1. Un tsconfig.json recommandé pour {{rigueur}}, avec l'explication des options clés (strict, noUncheckedIndexedAccess, allowJs, checkJs, module et moduleResolution selon le build).
2. Le code converti en TypeScript, avec des types et interfaces déduits de l'usage réel. Marque chaque type supposé d'un commentaire `// HYPOTHÈSE :`.
3. Les données externes (réponses d'API, localStorage, JSON) typées en `unknown` puis validées ou affinées avant usage.
4. La liste des bugs ou comportements douteux révélés par les types (undefined possibles, comparaisons entre types différents, arguments optionnels mal gérés), avec la ligne et la correction proposée, séparée de la conversion.
5. Les paquets @types nécessaires et les changements dans les scripts du package.json ou la config ESLint.
6. Un plan pour migrer le reste du projet : ordre des fichiers (des feuilles vers la racine), cohabitation avec le JS pendant la transition et moyens d'empêcher le retour des `any`.

Contraintes :
- Conserve exactement le comportement ; ne refactorise pas la logique dans la même étape.
- Interdits : `any`, `as any`, `@ts-ignore` et assertions non nulles `!` sans justification écrite.
- Si une correction change le comportement, propose-la à part sans l'appliquer.
- Utilise [À COMPLÉTER] pour ce qui ne peut pas être déduit.

Format : tsconfig, code converti, liste des constats et plan, chacun dans sa section.

Comment l'utiliser

  1. Commence par un petit fichier avec peu de dépendances et colle-le en entier. 2. Indique le bundler ou framework et la rigueur souhaitée. 3. Relis les commentaires HYPOTHÈSE, lance tsc --noEmit et les tests, puis recommence fichier par fichier.

Exemple d'utilisation

Code : utils/panier.js avec calcul des totaux et de la TVA · Projet : React avec Vite et ESLint · Rigueur : progressive · Environnement : navigateur.

Exemple de résultat

tsconfig.json (options clés)

"strict": true, "allowJs": true, "checkJs": true, "noUncheckedIndexedAccess": true et "moduleResolution": "bundler" (adapté à Vite). Le JS restant est vérifié pendant la migration fichier par fichier.

utils/panier.ts

// HYPOTHÈSE : forme déduite de l'usage dans le fichier d'origine
export interface ArticlePanier {
  readonly id: string;
  prix: number;
  quantite: number;
}

export function totalPanier(articles: readonly ArticlePanier[], remisePct = 0): number {
  const sousTotal = articles.reduce((somme, a) => somme + a.prix * a.quantite, 0);
  return sousTotal * (1 - remisePct / 100);
}

export function chargerPanier(): ArticlePanier[] {
  const brut: unknown = JSON.parse(localStorage.getItem('panier') ?? '[]');
  return Array.isArray(brut) ? brut.filter(estArticlePanier) : [];
}

function estArticlePanier(valeur: unknown): valeur is ArticlePanier {
  if (typeof valeur !== 'object' || valeur === null) return false;
  const v = valeur as Record<string, unknown>;
  return typeof v.id === 'string' && typeof v.prix === 'number' && typeof v.quantite === 'number';
}

Constats (non appliqués)

LigneProblèmeProposition
[À COMPLÉTER]JSON.parse lève une exception si la valeur stockée est corrompueEntourer d'un try/catch et renvoyer []
[À COMPLÉTER]remise arrivait parfois sous forme de texte depuis le formulaireConvertir avec Number() à la frontière

…

Informations clés

Catégorie
Programmation et développement · TypeScript
Type de résultat
Code
Niveau
Intermédiaire
Conçu pour
ChatGPT, Claude, Gemini et Microsoft Copilot
Vérifié sur
En attente de vérification éditoriale
Variables
Code JavaScript, Projet et build, Niveau de rigueur et Environnement d’exécution
Langue
Français
Prix
Gratuit, sans inscription
Mis à jour
07/11/2026

Questions fréquentes

Tout migrer d’un coup ou progressivement ?

Progressivement, dans presque tous les projets. Avec allowJs, tu convertis fichier par fichier en commençant par ceux sans dépendances, puis tu actives les options strictes quand l’essentiel est typé.

Pourquoi unknown plutôt que any pour les données externes ?

Parce que unknown oblige à vérifier la forme des données avant de les utiliser, alors que any désactive le contrôle. Pour les réponses d’API, une validation à l’exécution avec Zod par exemple est recommandée.

La migration peut-elle modifier le comportement de mon code ?

Elle ne devrait pas. Le prompt sépare la conversion des bugs révélés par les types, pour que tu décides quoi corriger et que tu le testes à part.

À quoi sert ce prompt ?

Convertissez un fichier ou module JavaScript en TypeScript avec des types déduits de l’usage réel, un tsconfig recommandé, la liste des bugs révélés par les types et un plan pour la suite.

Avec quels outils d'IA fonctionne-t-il ?

Il est conçu pour ChatGPT, Claude, Gemini et Microsoft Copilot. Nous ne l'avons pas encore vérifié sur ces outils ; les résultats peuvent donc varier de l'un à l'autre.

Comment personnaliser le prompt ?

Cliquez sur « Personnaliser » et remplissez les variables (Code JavaScript, Projet et build, Niveau de rigueur et Environnement d’exécution). Le texte se met à jour instantanément et vous pouvez ensuite le copier en un clic. Les valeurs sont stockées uniquement dans votre navigateur.

Faut-il de l'expérience pour l'utiliser ?

Il est de niveau intermédiaire : il vaut mieux connaître le sujet pour fournir un bon contexte et relire le résultat d'un œil critique.

Ce prompt est-il gratuit ?

Oui. Tous les prompts de HomeCasa Prompts sont gratuits, sans inscription ni abonnement. Vous pouvez aussi les utiliser dans des projets professionnels.

Puis-je me fier au résultat de l'IA ?

Considérez-le comme un brouillon de qualité : vérifiez toujours les données, les chiffres et les affirmations importantes avant de publier ou de prendre des décisions.

Prompts similaires