Angular2和lodash ......找不到名字

时间:2017-04-04 01:37:26

标签: angular lodash

Angular2和lodash ......为什么这么多戏剧?我的意思是......

以下是我的安装方式

npm install --save lodash
npm install --save @types/lodash

更新:

我跟着博客做了这个angular2-and-lodash-cannot-find-name:          npm install @ types / lodash @ ts2.0 --save-dev

有效。只有错误:

node_modules / @类型/茉莉

ERROR in [default] /Users/dude/Documents/frontend/qta-angular2/node_modules/@types/jasmine/index.d.ts:40:37 
A parameter initializer is only allowed in a function or constructor implementation.

ERROR in [default] /Users/dude/Documents/frontend/qta-angular2/node_modules/@types/jasmine/index.d.ts:40:45 
Cannot find name 'keyof'.

ERROR in [default] /Users/dude/Documents/frontend/qta-angular2/node_modules/@types/jasmine/index.d.ts:40:51 
'=' expected.

ERROR in [default] /Users/dude/Documents/frontend/qta-angular2/node_modules/@types/jasmine/index.d.ts:42:45 
A parameter initializer is only allowed in a function or constructor implementation.

ERROR in [default] /Users/dude/Documents/frontend/qta-angular2/node_modules/@types/jasmine/index.d.ts:42:55 
Cannot find name 'keyof'.

ERROR in [default] /Users/dude/Documents/frontend/qta-angular2/node_modules/@types/jasmine/index.d.ts:42:61 
'=' expected.

ERROR in [default] /Users/dude/Documents/frontend/qta-angular2/node_modules/@types/jasmine/index.d.ts:58:41 
Cannot find name 'Partial'.

ERROR in [default] /Users/dude/Documents/frontend/qta-angular2/node_modules/@types/jasmine/index.d.ts:99:21 
Cannot find name 'Partial'.

ERROR in [default] /Users/dude/Documents/frontend/qta-angular2/node_modules/@types/jasmine/index.d.ts:99:34 
Cannot find name 'Partial'.

ERROR in [default] /Users/dude/Documents/frontend/qta-angular2/node_modules/@types/lodash/index.d.ts:241:12 
Duplicate identifier '_'.

ERROR in [default] /Users/dude/Documents/frontend/qta-angular2/node_modules/@types/lodash/index.d.ts:241:15 
Cannot find namespace '_'.

ERROR in [default] /Users/dude/Documents/frontend/qta-angular2/node_modules/@types/lodash/index.d.ts:243:24 
Cannot find name 'Partial'.

ERROR in [default] /Users/dude/Documents/frontend/qta-angular2/node_modules/@types/lodash/index.d.ts:245:18 
Duplicate identifier '_'.

ERROR in [default] /Users/dude/Documents/frontend/qta-angular2/node_modules/@types/lodash/index.d.ts:362:38 
Cannot find namespace '_'.

5 个答案:

答案 0 :(得分:3)

我也面临同样的问题(找不到名称'Partial'),所以临时我在文件中添加了Partial变量,如下所示,我得到错误,我知道这不是正确的解决方案,但我不会遇到以下更改后的任何副作用或奇怪行为可能对您有所帮助。

它缺少在全局JavaScript文件中定义的变量,因此无法在typescript中找到它,但是当它在浏览器中运行时它会得到参考。

var Partial : any;

答案 1 :(得分:2)

只需更改您的package.json文件即可使用此功能:

@types/jasmine@2.5.41 // Or 2.5.38

它应该解决这个问题。

答案 2 :(得分:1)

可能会导致您的typescript版本与lodash版本或angular版本不匹配。

  • angular 2.xtypescript 2.0.x
  • 一起投放
  • angular 4.xtypescript 2.2.x
  • 一起投放

首先确保它是正确的。

然后,请确保您的lodash版本与您的typescript版本兼容。

P.S 还有一件小事(不会引起任何问题) - install @types/lodash --save-dev最好只是@types定义模块。

答案 3 :(得分:1)

将此代码段添加到angular-cli.json

"scripts": [
        "../node_modules/lodash/lodash.js" //make changes accordingly
      ],

在Component中,只需在导入部分之后添加声明部分并正常使用lodash。

import {EventsService} from '../../core/broadcast-event/broadcaster';
declare var _: any;

答案 4 :(得分:0)

如何将lodash导入组件?
import * as _ from 'lodash'

以上将导入所有LoDash,因此如果您担心块大小,您将需要指定您实际将要使用的运算符。

但是导入_应该会自动选择@types。