2016-11-07 59 views
0

我在使用Angular2-Typescript應用程序中的signalR時遇到了問題。我在之前的Angular 1應用程序中工作得很好。我的問題是與導入。Angular2(Typescript)中的SignalR - 導入錯誤

我有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; 
} 

在我使用它來導入signalr systemjs.config.js:

map: { 
'signalr': 'npm:signalr/jquery.signalR.js' 
} 

然後在我的組件使用:

import * as $ from 'signalr' 

我再有機會獲得智能感知,爲例如:

enter image description here

但是,有問題。如果我使用:

console.log($.hubConnection); 

我弄不明白。

任何幫助,將不勝感激。

回答

0

你可以試試這個方法

map: { 
     'ms-signalr-client': 'npm:ms-signalr-client/jquery.signalR.min.js', 
     'jquery': 'npm:jquery/jquery.min.js' 
} 

在TS

import 'ms-signalr-client'; 
    import * as $ from 'jquery'; 
    ... 
    $.hubConnection 
    ... 

希望這有助於

+0

這個工作。謝謝。在systemjs.config中,我將它指向'jquery/dist/jquery.js',並且在組件中選擇'轉到定義'時,我將其帶入文件:jquery.d.ts。 PS。我之前修改了package.json文件以包含類型引用:「typings」:「./jquery.d.ts」。 – Sparked

+0

不客氣。當然,你應該指向'jquery/dist/jquery.min.js'和typings.json'''jquery「:」registry:dt/jquery#1.10.0 + 20160929162922「, 」signalr「:」registry:dt /signalr#2.2.0+20160509082439" '。對不起,我很着急 – user3506588