将模块的多个命名导出导入单个对象

Meg*_*att 9 javascript import es6-modules

假设我有:

动物.js

import cat from './cat';
import dog from './dog';
import emu from './emu';
import pig from './pig';
import cow from './cow';

export { cat, dog, emu, pig, cow };
Run Code Online (Sandbox Code Playgroud)

在使用 的模块中animals.js,如何仅将几个需要的导入到键控对象中?我希望能够执行以下操作:

我的module.js

import { cat, dog } as housePets from './animals';

// housePets == { cat: theCatModule, dog: theDogModule }
Run Code Online (Sandbox Code Playgroud)

但是根据我的 IDE,这种语法是不正确的。

有没有办法做到这一点?或者是简单地单独导入所有对象,然后构建我自己的对象的最佳方法?

joh*_*pin 7

遗憾的是,ECMA-262规范中不可能出现这样的情况。他们只列出了这些可能性

import defaultExport from "module-name";
import * as name from "module-name";
import { export1 } from "module-name";
import { export1 as alias1 } from "module-name";
import { export1 , export2 } from "module-name";
import { foo , bar } from "module-name/path/to/specific/un-exported/file";
import { export1 , export2 as alias2 , [...] } from "module-name";
import defaultExport, { export1 [ , [...] ] } from "module-name";
import defaultExport, * as name from "module-name";
import "module-name";
var promise = import("module-name");
Run Code Online (Sandbox Code Playgroud)

您可以做的最好的事情(仅添加一行)如下:

import { cat, dog } from './animals';
const housePets = { cat, dog };
Run Code Online (Sandbox Code Playgroud)