【问题标题】:How to reexport `*` from a module that uses `export =`如何从使用 `export =` 的模块重新导出 `*`
【发布时间】:2017-01-27 11:03:57
【问题描述】:

我有一个模块m

export = {
    a: 3
}

然后在我的index.ts 中,我想重新导出m 正在导出的所有内容,所以我使用:

export * from './m';

但它给了我一个错误:

错误: TS2498:Module D:/Projects/typescript/m 使用export = 并且不能与export * 一起使用。

如何从使用export= 语法的模块重新导出?我无法控制 export= 语法的模块。

【问题讨论】:

  • 为什么需要用“=”导出?导出常量 m = {a: 3};还不够吗?
  • 我无法使用 export= 语法控制模块。
  • 你试过import m = require("./m"); export m;吗?

标签: typescript


【解决方案1】:

你可以使用

import m = require("./m");
export {m};

import m = require("./m");
export default m;

旧样式导入 export =require() 与模块导出不兼容。

参考documentation

UPDATE 用于 JSON 文件导入 启用所需的 tsconfig 选项后,以下使用 from 语法工作。从 2.9 开始可用。

import myObjectName from './path/to/file.json';
export { myObjectName };

【讨论】:

  • 如何导出 *,所以我们可以使用 import {something} from 'module' 而不是 import {all} from 'module' 然后 cons something = all.something ??
  • 你也可以试试:``` import * as moduleA from "module-a";导出默认模块A; ```
【解决方案2】:

如果你因为某种原因不能使用 es 模块(import, export),你可以用require 这样做:

const reexported = require('./some/path')

Object.keys(scripts).forEach(key => {
  exports[key] = reexported[key] // exports is a special variable
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-27
    • 2022-08-07
    • 1970-01-01
    • 1970-01-01
    • 2016-04-17
    • 2019-10-22
    • 1970-01-01
    • 2017-04-29
    相关资源
    最近更新 更多