J'étais en train de vérifier le .tsconfigfichier de quelqu'un et là j'ai repéré--esModuleInterop
Ceci est son .tsconfigdossier
{
"compilerOptions": {
"moduleResolution": "node",
"target": "es6",
"module": "commonjs",
"lib": ["esnext"],
"strict": true,
"sourceMap": true,
"declaration": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"declarationDir": "./dist",
"outDir": "./dist",
"typeRoots": ["node_modules/@types"]
},
"include": ["src/**/*.ts"],
"exclude": ["node_modues"]
}
Ici, ma principale question est de savoir ce qu'est "esModuleInterop": true,et
"allowSyntheticDefaultImports": true,. Je sais qu'ils dépendent en quelque sorte du "module": "commonjs",. Quelqu'un peut-il essayer de l'expliquer dans le meilleur langage humain possible?
La documentation officielle des allowSyntheticDefaultImportsÉtats
Autoriser les importations par défaut à partir de modules sans exportation par défaut. Cela n'affecte pas l'émission de code, juste la vérification de type.
Cela signifie t-il? s'il n'y a pas de valeur par défaut d'exportation, je pense que le seul cas d'utilisation de la valeur par défaut d'importation serait d'initialiser quelque chose? comme singleton?
La question / réponse suivante n'a pas non plus de sens. Existe-t-il un moyen d'utiliser --esModuleInterop dans tsconfig plutôt que d'être un indicateur?
Et --esModuleInteropdéfinition sur la page du compilateur
Émettez les helpers __importStar et __importDefault pour la compatibilité de l'écosystème babel à l'exécution et activez --allowSyntheticDefaultImports pour la compatibilité des systèmes de types.
Il m'a également semblé difficile de comprendre / comprendre
--esModuleInteropdrapeau, ceimport * as moment from 'moment'n'était pas correct.import moment = require('moment')était.