我认为这个answer 可以很容易地用于任何项目,并以更少的努力带来最好的结果。
对于 Typescript 用户,使用如下:
// lodash.utils.ts
export { default as get } from 'lodash/get';
export { default as isEmpty } from 'lodash/isEmpty';
export { default as isNil } from 'lodash/isNil';
...
并且可以像导入lodash一样使用:
//some-code.ts
import { get } from './path/to/lodash.utils'
export static function getSomething(thing: any): any {
return get(thing, 'someSubField', 'someDefaultValue')
}
或者,如果您希望保留 _ 以避免冲突(例如,map 来自 rxjs 与 lodash)
//some-other-code.ts
import * as _ from './path/to/lodash.utils'
export static function getSomething(thing: any): any {
return _.get(thing, 'someSubField', 'someDefaultValue')
}
更新:
似乎正确的导出方式是:
export * as get from 'lodash/get';
export * as isEmpty from 'lodash/isEmpty';
export * as isNil from 'lodash/isNil';
...
但是与@types/lodash 发生了奇怪的碰撞,我已经删除了这个类型的包,因为我会得到这个错误:
模块 '"/../project/node_modules/@types/lodash/cloneDeep"' 使用
'export =' 不能与 'export *'.ts(2498) 一起使用
更新:
经过一番挖掘,我将tsconfig.json 功能esModuleInterop 变成了true,它允许我执行以下操作:
import get from 'lodash/get';
import isEmpty from 'lodash/isEmpty';
import isNil from 'lodash/isNil';
...
export { get, isEmpty, isNil, ... };
请注意,这会影响您在项目中定义为 import * as lib from 'lib' 的所有导入。请遵循文档以确保它适合您。