Javascript 导入多个';出口';使用ES6或TypeScript

Javascript 导入多个';出口';使用ES6或TypeScript,javascript,typescript,Javascript,Typescript,我将D3.js V4与模块一起使用,我想将几个模块导入single3`名称空间。下面的代码片段是我当前的解决方案,有更好的方法吗 const d3 = Object.assign( {}, require('d3-axis'), require('d3-selection'), require('d3-format') ) 所以,每当我需要什么,我都会打电话给下面这样的人 d3.format('.5s') // OR d3.select(something) 是否有更好的方法

我将D3.js V4与模块一起使用,我想将几个模块导入single3`名称空间。下面的代码片段是我当前的解决方案,有更好的方法吗

const d3 = Object.assign(
  {},
  require('d3-axis'),
  require('d3-selection'),
  require('d3-format')
)
所以,每当我需要什么,我都会打电话给下面这样的人

d3.format('.5s')
// OR
d3.select(something)
是否有更好的方法将所有内容导入单个
d3
命名空间

使用ES6或TypeScript导入多个“导出”

打字安全的方法

import * as d3Axis from 'd3-axis';
import * as d3Selection from 'd3-selection';

export const d3 = {...d3Axis, ...d3Selection};
也就是说,
d3
是在TypeScript之前编写的,在其API决策中不支持类型安全

更多 是的,您需要针对类型安全进行设计,例如,如果您的库使用直接阵列访问,那么它本身就是不安全的

使用ES6或TypeScript导入多个“导出”

打字安全的方法

import * as d3Axis from 'd3-axis';
import * as d3Selection from 'd3-selection';

export const d3 = {...d3Axis, ...d3Selection};
也就是说,
d3
是在TypeScript之前编写的,在其API决策中不支持类型安全

更多
是的,您需要针对类型安全进行设计,例如,如果您的库使用直接阵列访问,则本质上是不安全的

require
不是ES2015。一点也不奇怪。唯一的ES导入语法是通过
import
@zerkms,谢谢您的评论。我刚刚更新了一个问题:有没有更好的方法可以做到这一点?
require
不是ES2015。一点也不奇怪。唯一的ES导入语法是通过
import
@zerkms,谢谢您的评论。我刚刚更新了这个问题,有更好的方法吗?谢谢@basarat提供的所有建议。在阅读了您提供的链接后,我仍然不太理解您在“更多”下谈论的内容。您能详细阐述一下吗?谢谢@basarat提供的所有建议。在阅读了您提供的链接后,我还是不太明白你在下面谈论的事情,你能再详细一点吗?