J'ai un paquet npm avec des dactylographies mal écrites et obsolètes. J'ai écrit mes propres dactylographies et maintenant je me demande si je peux en quelque sorte exclure les dactylographies originales du paquet npm. Ce n'est pas une simple extension d'interfaces, les originaux sont essentiellement des ordures à ce stade.
L'utilisation de la liste d'exclusion dans tsconfig.json ne fonctionne bien sûr pas à cet effet, car elle charge toujours les fichiers à partir de node_modules même si vous excluez ce dossier.
Vous pouvez obtenir le comportement souhaité avec l'option de chemins dans tsConfig. Cela pourrait ressembler à ceci:
{
"compilerOptions": {
...
"paths": {
"*": [
"src/*",
"declarations/*"
]
}
},
...
}
Avec cette configuration, TypeScript recherche des modules dans src (il devrait y avoir toute la source de l'application) et également dans les déclarations, dans le dossier des déclarations, je place généralement mes déclarations supplémentaires nécessaires.
Pour remplacer les saisies d'un module de nœud, il existe deux options:
placez un dossier nommé comme le module dans le dossier des déclarations, contenant un fichier appelé index.d.ts pour les typages
placez un fichier de déclaration, nommé comme le module, dans le dossier des déclarations
Comme exemple de travail, vous pouvez jeter un œil à ce dépôt https://github.com/kaoDev/react-ts-sample
Un indice important de Bernhard Koenig :
L'ordre des chemins compte. J'ai dû mettre le chemin avec mes remplacements avant le chemin avec les définitions de type d'origine afin que mes remplacements soient récupérés en premier. - Bernhard Koenig
Créer node_modules
dossier sous votre src
, puis mettez les typages des modules que vous souhaitez écraser à l'intérieur:
├── node_modules
│ └── ...
│
└── src
├── index.ts
├── ... your codes ...
│
└── node_modules
└── <module-to-be-overwritten>
└── index.d.ts
Pas besoin de modifier compilerOptions
dans tsconfig.json.
Lire Comment TypeScript résout la section des modules dans https://www.typescriptlang.org/docs/handbook/module-resolution.html =.