javascript - Importovat { map } z 'lodash', 'rxjs', 'ramda' současně, aniž by byla ohrožena čitelnost
Jak lze importovat map nebo merge či jakoukoli jinou funkci z více importů?
import { map } from 'lodash';
import { map } from 'rxjs/operators';
import { map } from 'ramda';
Očividná odpověď je:
import { map as _map } from 'lodash';
import { map as rxMap } from 'rxjs/operators';
import { map as RMap } from 'ramda';
Ale to je ošklivé a zakrývá kód. Považuji to za hack, ne za řešení, ale za obejití kvůli omezením statické analýzy
Mohu vymyslet jiný způsob:
import * as _ from 'lodash';
import { map } from 'rxjs/operators';
import * as R from 'ramda';
Nicméně komunita JS toto odsuzuje kvůli důvodům tree-shakingu. Přesto však věřím, že je to přehnané, ušetří to jen 45 kB.
Odpověď č. 1
V podstatě si můžete vytvořit vlastní balíčky utilit. Například:
// utils/lodash.js
export { map, get, set } from 'lodash';
// yourScript.js
import * as _ from 'utils/lodash';
Odpověď č. 2
Upřímně řečeno, záleží na tom, co ty nebo ten, pro koho pracuješ, považujete za důležitější. Někdy je těch extra 45 kB hrozné, ale většinou, a zvláště u osobních projektů, by na tom nikomu nemělo záležet. A pokud to vaše programování udělá efektivnější, jděte s tím, co pro vás funguje nejlépe.
