2 votes

Comment rendre les cartes de chemin TypeScript utiles dans le code de production ?

J'ai travaillé sur mon projet TypeScript et j'ai voulu m'attaquer à l'importation relative. ../../../ problème d'enfer. J'ai découvert qu'en tsconfig.json Je peux spécifier le baseUrl y paths afin que mon ../../../../interface peut devenir simplement @interface lorsque j'ajoute un tel extrait au fichier tsconfig.json :

    "baseUrl": ".",
    "paths": {
      "@interface" : ["src/interface"],
    },

et cela a très bien fonctionné... pendant un certain temps. J'ai remplacé les longs chemins dans les déclarations d'importation par des versions plus courtes. VSCode a eu la gentillesse de comprendre la correspondance des chemins et le codage est devenu plus facile. Lorsque j'ai finalement voulu tester l'application, j'ai compilé le code avec tsc commande. Lorsque j'ai voulu l'exécuter, j'ai obtenu l'erreur suivante :

Error: Cannot find module '@interface'

J'ai inspecté le code JavaScript de sortie et j'ai vu que le chemin dans l'importation n'a pas été échangé par le compilateur, comme je m'y attendais, mais qu'il a simplement été utilisé sous la même forme que dans le code JavaScript. .ts fichier :

const _interface_1 = require("@interface");

J'ai trouvé un problème sur TS GitHub depuis août 2018 se posant exactement la même question. Jusqu'à présent, il n'y a pas eu de solution satisfaisante au problème.

Ma question est la suivante : quel est le cas d'utilisation de la cartographie des chemins en TypeScript ? comme décrit dans le manuel ? Quel est l'intérêt de les utiliser si, au final, ils rendent le code de production impossible à exécuter ?

1voto

XGreen Points 5172

Je suis également d'accord avec le commentaire d'Aviad, mais sans le juger. Si vous devez le faire, voici un moyen :

Ajouter un module module-alias à vos dépendances, puis ajoutez le mapping au package.json :

"_moduleAliases": {
    "@interface": "dist/interface", // note its referencing dist folder
},

Puis dans votre fichier ts principal, par exemple index.ts enregistrer l'alias du module en utilisant import "module-alias/register";

Pour en savoir plus, cliquez ici

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X