Version TypeScript: Version 3.9.0-dev.20200228
Termes de recherche:
exporter comme importhelpers
exporter comme importstar
exporter comme assistant
Code
export * as _ from 'lodash-es';
compilé avec la configuration suivante:
{
"compilerOptions": {
"target": "es2020",
"module": "commonjs",
"importHelpers": true,
"esModuleInterop": true
}
}
Comportement prévisible:
La sortie doit être la même que si vous compiliez l'ancien TS équivalent:
import * as _ from 'lodash-es';
export {_}
c'est-à-dire que le Javascript compilé doit être:
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
// export * as _ from 'lodash-es';
const _ = tslib_1.__importStar(require("lodash-es"));
exports._ = _;
Comportement réel:
Les fonctions d'assistance sont émises:
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports._ = __importStar(require("lodash-es"));
Lien Playground:
Le Typescript Playground ne prend pas en charge importHelpers
, et l'analogue noEmitHelpers
ne cause pas ce comportement; Je ne pense pas qu'il soit possible de reproduire ce problème en utilisant le Playground.
Problèmes liés:
La recherche de problèmes similaires m'a pointé vers les numéros 21560 et 27415, qui mentionnent également que les assistants d'importation sont intégrés dans différents cas marginaux. Étant donné que l'exportation en tant que n'est pas une importation dynamique et que l'ancien problème lié aux importations régulières est résolu, cela semble être un problème différent, peut-être lié.
L'assistant «__setModuleDefault» est à l'origine de cette erreur pour moi:
TypeError: Cannot redefine property: default
Je n'ai pas rencontré cela sous 3.8.
@lotz pareil pour moi avec le module cross-fetch
Commencé avec 3.9.2
Je l'ai corrigé en nommant importation fetch car il est également nommé exporté non seulement exporté par défaut.
Nous devrions traiter export * as ns from ...
la même manière que import * as ns from ...
dans collectExternalModuleInfo
. Je devrais avoir une solution sous peu.
@lotz : Je ne sais pas si votre problème est lié, et peut avoir été résolu par # 38808. Pouvez-vous vérifier si tel est le cas, et si non, pouvez-vous fournir une reproduction spécifique pour votre cas?
Commentaire le plus utile
L'assistant «__setModuleDefault» est à l'origine de cette erreur pour moi:
Je n'ai pas rencontré cela sous 3.8.