我在Angular2-Typescript应用程序中使用signalR时遇到问题。我在之前的Angular 1应用程序中运行良好。我的问题在于导入。
我有intellisense工作,但强类型似乎没有正确映射到原始的js文件。
在node_modules中,我有这两个文件夹(此处为空间编辑):
├───jquery
│ │ jquery.d.ts
│ │ LICENSE.txt
│ │ package.json
│ │ README.md
│ │
│ ├───dist
│ │ core.js
│ │ jquery.js
│
└───signalr
jquery.signalR.js
jquery.signalR.min.js
package.json
signalr.d.ts
jquery.d.ts文件就是这个: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/jquery/jquery.d.ts
signalr.d.ts文件就是这个: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/signalr/signalr.d.ts
注意:我已经编辑了signalr.d.ts以在最后添加它,否则我无法导入它:
declare var sr : JQueryStatic;
declare module 'signalr'{
export = sr;
}
在systemjs.config.js中我用它来导入signalr:
map: {
'signalr': 'npm:signalr/jquery.signalR.js'
}
然后在我的组件中使用:
import * as $ from 'signalr'
然后我可以访问intellisense,例如:
但是,有问题。如果我使用:
console.log($.hubConnection);
我未定义。
对此的任何帮助都将非常感激。
答案 0 :(得分:0)
你可以试试这种方式
map: {
'ms-signalr-client': 'npm:ms-signalr-client/jquery.signalR.min.js',
'jquery': 'npm:jquery/jquery.min.js'
}
在你的
中 import 'ms-signalr-client';
import * as $ from 'jquery';
...
$.hubConnection
...
希望这有帮助