【问题标题】:How to do re-export with overrides?如何使用覆盖进行重新导出?
【发布时间】:2016-12-22 23:24:29
【问题描述】:
export * form 'some-library'
export * from './myOverrides'
// error: [ts] Module 'some-module' has already
// exported a member named 'someFunc'.
// Consider explicitly re-exporting to resolve the ambiguity.

import * as SomeLib from 'some-library'
import * as MyOverrides from './myOverrides'

export { ...SomeLib, ...MyOverrides } // syntax error

const Overridden = { ...someLib, ...MyOverrides } // works
export { ...Overridden } // syntax error

我想避免挑选所有命名的导出只是为了重新导出它们;

import { a, b, c, d, e, ..... } from 'some-library'
export { a, b, c, d, e, .... }
export * from './myOverrides'

【问题讨论】:

  • 据我所知,没有干净的方法可以做到这一点,也没有任何关于未来这样做的建议。 (不过看起来确实很有用!)
  • 嗨@JKillian!,请参阅下面的答案。我挖掘了一些问题并找到了它。 :)
  • 嘿@unional! :) 是的,解决方案可以满足您的需求,这很好!但是,您仍然必须单独选择覆盖。我找不到一种方法,您可以在不专门命名它们的情况下导出覆盖。
  • 确实如此。但至少我只能为覆盖而不是原始库做到这一点。所以应该只有几个(手指交叉)。 :)

标签: javascript typescript ecmascript-6


【解决方案1】:

来自Guy Sensei:

https://github.com/systemjs/systemjs/issues/1031#issuecomment-171262430

我需要:

import { theFunction } from './myOverrides'

export * from 'some-library'
export { theFunction }

这是可行的,因为本地出口优先。

【讨论】:

    【解决方案2】:

    我发现这很好用:

    import * as packageA from "packageA";
    import * as packageB from "packageB";
    
    export default { ...packageA, ...packageB };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-17
      • 1970-01-01
      • 2015-08-10
      • 2013-11-26
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多