Suppose I have:
animals.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 };
In a module that uses animals.js
, how can I import only a couple of needed ones into a keyed object? I'd like to be able to do something like:
my-module.js
import { cat, dog } as housePets from './animals';
// housePets == { cat: theCatModule, dog: theDogModule }
But according to my IDE, this syntax is not correct.
Is there a way to do this? Or is the best way to simply import all of them individually, then construct my own objects afterward?
Sadly nothing like that is possible in the ECMA-262 specifications. They only lists these possibilities:
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");
Best that you can do (only add a single line) is the following:
import { cat, dog } from './animals';
const housePets = { cat, dog };