是否可以导入模块中的所有导出并同时定位其中一个或多个导出?

时间:2018-01-24 18:07:36

标签: typescript es6-modules

我们说我在这里定义了一个模块:

// math.ts
export function mult() {
}

export function add() {
}

export function sub() {
}

然后,在我的客户端代码中,我希望获得对所有这些方法的对象引用,以及按名称提取其中一个,如下所示:

// index.ts
import * as math from "./math"
import {add} from "./math"

我的导入或模块声明是否有任何可能的配置或语法允许我将这两行合并?像这样:

import * as math, {add} from "./math"

甚至更好:

import Math, {add} from "./math"

我似乎无法在网上找到任何文档来演示如何为Typescript或es6执行此操作,但您确实在野外看到它,例如:

https://github.com/ashsvendsen26/ChatComponent/blob/1c598703fd53a461e3e065859c258b0c555255a6/src/App.js#L1

编辑: 这在技术上按照我想要的方式工作,但我不喜欢它,因为我必须重复模块中的每个功能名称。如何整理它以便我不必重复自己?

export function add() {

}

export function sub() {

}

export function mult() {

}

export default {
    add,
    sub,
    mult
}

2 个答案:

答案 0 :(得分:0)

我提出了这种方法:

// _math.ts
export function add() {
}

export function sub() {
}

export function mult() {
}

// math.ts
import * as math from "./_math";
export * from "./_math";
export default math;

然后我可以这样导入:

import Math, {add} from "math";

有点笨拙,你必须设计一个额外的文件,但这是一次性的烦恼,我可以忍受它。

答案 1 :(得分:0)

您可以这样做:

// math.ts
export function mult() {
}

export function add() {
}

export function sub() {
}

然后

//client.js
import * as math from "./_math";
const {default: Math, add} = math;