Typescript: export-as๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด importHelpers : true ์ผ ๋•Œ __importStar ๋ฐ ๊ด€๋ จ ํ—ฌํผ๊ฐ€ ๋ฐฉ์ถœ๋ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2020๋…„ 02์›” 28์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: microsoft/TypeScript


TypeScript ๋ฒ„์ „ : ๋ฒ„์ „ 3.9.0-dev.20200228


๊ฒ€์ƒ‰์–ด:

importhelper๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ
importstar๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ
๋„์šฐ๋ฏธ๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ

์•”ํ˜ธ

export * as _ from 'lodash-es';

๋‹ค์Œ ๊ตฌ์„ฑ์œผ๋กœ ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๋‹ค.

{
  "compilerOptions": {
    "target": "es2020",
    "module": "commonjs",
    "importHelpers": true,
    "esModuleInterop": true
  }
}

์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘ :

์ถœ๋ ฅ์€ ๋™๋“ฑํ•œ ์ด์ „ TS๋ฅผ ์ปดํŒŒ์ผํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

import * as _ from 'lodash-es';
export {_}

์ฆ‰, ์ปดํŒŒ์ผ ๋œ ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผํ•ฉ๋‹ˆ๋‹ค.

"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._ = _;

์‹ค์ œ ํ–‰๋™ :

๋„์šฐ๋ฏธ ํ•จ์ˆ˜๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

"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"));

ํ”Œ๋ ˆ์ด ๊ทธ๋ผ์šด๋“œ ๋งํฌ :

Typescript Playground๋Š” importHelpers ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์•„๋‚ ๋กœ๊ทธ noEmitHelpers ๋Š” ์ด๋Ÿฌํ•œ ๋™์ž‘์„ ์œ ๋ฐœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ”Œ๋ ˆ์ด ๊ทธ๋ผ์šด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ์ด ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ ํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ด€๋ จ ๋ฌธ์ œ:

์œ ์‚ฌํ•œ ๋ฌธ์ œ ๊ฒ€์ƒ‰์€ # 21560 ๋ฐ # 27415๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋ฉฐ ๊ฐ€์ ธ ์˜ค๊ธฐ ๋„์šฐ๋ฏธ๊ฐ€ ๋‹ค๋ฅธ ๊ฐ€์žฅ์ž๋ฆฌ ์ผ€์ด์Šค์— ์ธ๋ผ์ธ๋œ๋‹ค๋Š” ๊ฒƒ๋„ ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. export-as๋Š” ๋™์  ๊ฐ€์ ธ ์˜ค๊ธฐ๊ฐ€ ์•„๋‹ˆ๋ฉฐ ์ผ๋ฐ˜ ๊ฐ€์ ธ ์˜ค๊ธฐ์™€ ๊ด€๋ จ๋œ ์ด์ „ ๋ฌธ์ œ๊ฐ€ ์ข…๊ฒฐ ๋œ ๊ฒƒ์œผ๋กœ ๋ณด์•„, ์ด๊ฒƒ์€ ๋‹ค๋ฅธ ๊ด€๋ จ ๋ฌธ์ œ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

Bug Rescheduled

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

"__setModuleDefault"๋„์šฐ๋ฏธ๊ฐ€์ด ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

TypeError: Cannot redefine property: default

๋‚˜๋Š” 3.8์—์„œ ์ด๊ฒƒ์„ ๋งŒ๋‚˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  3 ๋Œ“๊ธ€

"__setModuleDefault"๋„์šฐ๋ฏธ๊ฐ€์ด ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

TypeError: Cannot redefine property: default

๋‚˜๋Š” 3.8์—์„œ ์ด๊ฒƒ์„ ๋งŒ๋‚˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

@lotz ๋ชจ๋“ˆ ํฌ๋กœ์Šค ํŽ˜์น˜๋กœ ๋‚˜๋ฅผ ์œ„ํ•ด ๋™์ผ
3.9.2๋กœ ์‹œ์ž‘

๊ธฐ๋ณธ ๋‚ด๋ณด๋‚ด๊ธฐ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‚ด๋ณด๋‚ด๊ธฐ๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ๋„ ์ด๋ฆ„์ด ์ง€์ •๋œ ๊ฐ€์ ธ ์˜ค๊ธฐ ๊ฐ€์ ธ ์˜ค๊ธฐ๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์น˜๋ฃŒํ•ด์•ผ export * as ns from ... ์™€ ๊ฐ™์€ import * as ns from ... ์—์„œ collectExternalModuleInfo . ๊ณง ์ˆ˜์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

@lotz : ๊ท€ํ•˜์˜ ๋ฌธ์ œ๊ฐ€ ๊ด€๋ จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์œผ๋ฉฐ # 38808์— ์˜ํ•ด ์ˆ˜์ •๋˜์—ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์‚ฌ์‹ค์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์‚ฌ๋ก€์— ๋Œ€ํ•œ ํŠน์ • ์žฌํ˜„์„ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰