我在项目中使用Angular 6.x.x
,具有以下lodash
依赖项。
"dependencies": {
"@angular/common": "6.0.9",
"@angular/core": "6.0.9",
...
"@types/lodash": "^4.14.114",
...
},
以下两个导入都不适用于我。
import _ from 'lodash';
import * as _ from 'lodash';
下面的导入似乎运行得很好。我的环境有问题。在删除并安装了node_modules
目录后,它就工作了。
import * as _ from 'lodash';
简介
解决方案是:
- 将
{"esModuleInterop": true}
添加到您的.tsconfig
- 确保在
devDependencies
中安装了"@types/lodash"
推理
简而言之:与ES6默认机制相比,Typescript具有不同的默认import
机制
例如,您可以通过以下方式从模块导入函数:
-
整体导入:
import _ from 'lodash'; const results = _.uniq([1, 1, 2, 3]);
-
只导入一部分:
import {uniq} from 'lodash'; const results = _.uniq([1, 1, 2, 3]);
然而,在Typescript中,它为2. Import a part
提供了一些语法糖,如下所示:
// This is valid in Typescript
import uniq from 'lodash';
const results = _.uniq([1, 1, 2, 3]);
这很好,但使1 Import as a whole
不可推断。通过添加esModuleInterop
,它可以使默认的ES6行为再次工作。
在另一个帖子中提到了更多细节:有没有一种方法可以在tsconfig中使用--esModuleInterop,而不是将其作为标志?
您需要安装lodash库。
"@types/lodash"是将lodash与typescript一起使用所需的lodash类型定义。
安装lodash运行:
npm i --save lodash
在终端中。