如果我什么都不做并添加类型定义它适用于jquery但是lodash得到了
'_'表示UMD全局,但当前文件是模块。请考虑添加导入。
如果我尝试使用导入调用的任意组合导入lodash,我得到
lodash.js不是一个模块
我试图通过问一个问题here得到帮助,因为Angular(Angular 2)有another answer它被关闭了。我真的需要一个真正的答案,所以我用我自己的解决方案重新发布,希望有人最终会帮助我理解这个问题。
在这种情况下,我是:
我在我的全局类型定义文件(〜\ src \ typings.d.ts)中添加了以下代码来解决问题。我正在使用Angular CLI 1.7
// lodash global typing - begin
declare namespace _ {
}
// lodash global typing - end
安装lodash后,我在我的工作文件中使用import * as _ from 'lodash';
。
'_'表示UMD全局,但当前文件是模块。请考虑添加导入。
这是由类型定义引起的。进入你的@ types / lodash文件并删除这些行:
export = _;
export as namespace _;
这将解决错误。
***编辑****
如果您的类型定义文件中有任何全局声明,则删除上面的导出语句将导致另一个错误,例如,如下所示:
declare global { }
要解决此问题,请将属性从全局声明移动到引用它们的接口 - 或者完全删除它们并将引用的类型更改为通用的。我不确定哪种解决方案能够做出更好的最终编译,但前者在我的应用程序中并没有像IE11那样引起任何问题。