我尝试使用angular 2创建一个应用程序,并希望在我的.ts文件中使用underscore.js库,例如当我想使用此函数时:
let myId = _.rest([5, 4, 3, 2, 1]);
_
未定义并抛出错误,我不想在我的模块中使用declare var _ : any;
答案 0 :(得分:76)
对于基于https://cli.angular.io的项目,我需要执行以下操作:
1)导入库
npm install underscore --save
npm install @types/underscore --save
2)在tsconfig.app.json中,将下划线添加到数组'types':
"types": [
"underscore"
]
3)在任何组件文件中我需要使用下划线,我添加了这个
import * as _ from 'underscore';
4)然后我可以使用:
console.log('now: ', _.now());
的所有功能
答案 1 :(得分:18)
您必须为下划线添加TypeScript定义:
tsd安装下划线
配置SystemJS
System.config({
[...]
paths: {
underscore: './node_modules/underscore/underscore.js'
}
});
最后导入模块
import * as _ from 'underscore';
答案 2 :(得分:5)
检查此回购。它有一个下划线的例子
https://github.com/angular/angular-cli/wiki/3rd-party-libs#adding-underscore-library-to-your-project
我在我的导入上执行此操作以使其正常工作
//Place this at the top near your imports
/// <reference path="../../../../typings/globals/underscore/index.d.ts" />
import {Injectable} from '@angular/core';
import {Http} from '@angular/http';
import * as _ from 'underscore';
确保您有正确的参考路径来强调打字。
答案 3 :(得分:5)
对于基于angular2-seed的项目,我需要:
安装下划线包:
npm install underscore --save
将以下内容添加到globalDependencies下的typings.json:
"underscore": "github:DefinitelyTyped/DefinitelyTyped/underscore",
在project.config.ts下添加以下内容:
this.SYSTEM_CONFIG_DEV.paths['underscore'] =
`${this.APP_BASE}node_modules/underscore`;
this.SYSTEM_BUILDER_CONFIG.packages['underscore'] = {
main: 'underscore.js',
defaultExtension: 'js'
};
导入&#34; _&#34;在我的ts文件中:
import * as _ from 'underscore';
答案 4 :(得分:4)
我已经使用这种方式为Angular 4.0.2包含了这个库:
npm install underscore --save
npm install @types/underscore --save
systemjs.config.js
map: {
// our app is within the app folder
'app': 'app',
.....
// other libraries
'rxjs': 'npm:rxjs',
'underscore': 'npm:/underscore/underscore.js'
}
最后:
import * as _ from 'underscore';
答案 5 :(得分:1)
您需要在项目中安装underscore.d.ts typings以使用其js库。检查this以了解如何包含打字