GOOGLE ADS

samedi 23 avril 2022

Désactiver "inlining" du module importé

A ma grande surprise, tsc "inline" l'import d'un petit module. j'ail10nBundles-stub.ts

const l10nBundles = new Map();
export default l10nBundles;

et quand I import l10nBundles from "l10nBundles"(avec une pathsentrée appropriée dans tsconfig.json) l'instruction d'importation est perdue et la définition est copiée dans le fichier js résultant.

Je ne veux pas ça. Ceci est juste un mannequin de compilation. Le "réel" l10nBundles.jsest généré par le serveur au moment de l'exécution et importdoit donc être préservé et résolu (c'est-à-dire le module importé lu depuis le serveur) par le navigateur au moment de l'exécution.

Je n'ai pas trouvé d'option pour forcer tsc à conserver l'importation. Y a-t-il? Ou puis-je éviter l'inlining par d'autres moyens?


Solution du problème

Cela m'a pris un peu plus de temps, mais ensuite j'ai pensé, hé, si je ne fournis pas de code source mais seulement des informations de type lors de la compilation, il n'y a pas de source qui puisse être intégrée, n'est-ce pas? Donc, en utilisant un fichier l10nBundles-stub.d.ts(notez le "d") avec

export default new Map<string,Map<string,string>>();

fait l'affaire maintenant, le importest laissé en place.

Aucun commentaire:

Enregistrer un commentaire

Comment utiliseriez-vous .reduce() sur des arguments au lieu d'un tableau ou d'un objet spécifique&nbsp;?

Je veux définir une fonction.flatten qui aplatit plusieurs éléments en un seul tableau. Je sais que ce qui suit n'est pas possible, mais...