Typescript: L'utilisation d'export-as émet __importStar et les helpers associés lorsque importHelpers: true

Créé le 28 févr. 2020  ·  3Commentaires  ·  Source: microsoft/TypeScript


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é.

Bug Rescheduled

Commentaire le plus utile

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.

Tous les 3 commentaires

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?

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

bgrieder picture bgrieder  ·  3Commentaires

dlaberge picture dlaberge  ·  3Commentaires

jbondc picture jbondc  ·  3Commentaires

seanzer picture seanzer  ·  3Commentaires

kyasbal-1994 picture kyasbal-1994  ·  3Commentaires