我在项目中使用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';
答案 0 :(得分:2)
似乎以下导入工作正常。我的环境有问题。删除node_modules
目录并安装后,它可以正常工作。
import * as _ from 'lodash';
答案 1 :(得分:2)
解决方案是:
{"esModuleInterop": true}
添加到您的.tsconfig
"@types/lodash"
中安装了devDependencies
简而言之:
Typescript与ES6默认设置相比,具有不同的默认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行为再次起作用。
此处在另一个线程中提到了更多详细信息: Is there a way to use --esModuleInterop in tsconfig as opposed to it being a flag?
答案 2 :(得分:1)
您需要安装lodash库。
“ @ types / lodash”是lodash类型定义,将lodash与打字稿一起使用是必需的。
要安装lodash,请运行:
npm i --save lodash
在终端中。