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?
As @johannchopin mentioned in their answer, this is not possible as per the latest specs. However if you want import ALL the exports from a file in a single key name, you can try something like this -
foo.js
const a = '123';
const b = 123;
export default { a, b };
bar.js
import KeyName from './temp';
console.log(KeyName.a, KeyName.b);
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 that:
import { cat, dog } from './animals';
const housePets = { cat, dog };
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With