12

angular.js と jquery の簡単に見つけられる typescript の宣言 (d.ts) ファイルを使い始めました。ただし、SignalR jquery のものが見つかりません。

助けてくれませんか。インターフェイスを作成することはできましたextends JQueryが、どういうわけか機能していません...

var hub = $.connection.myHub

それは物事について不平を言っていconnectionます...「プロパティ「接続」はタイプ「JQueryStatic」の値に存在しません」と言います

4

5 に答える 5

16

IdentifyTypedには、SignalR の完全な TypeScript 定義があります

リンクを更新しました。Stuart に感謝します。

于 2012-11-13T09:44:52.560 に答える
8

これは私が手早く汚い方法で準備できたものです。おそらくほとんど正しいとは言えませんが、今の私には十分であり、意図したとおりに機能しているようです。

始めてみるのもいいかもしれません。「jquery.signalR-0.5.3.d.ts」と呼びましょう:

/// <reference path="jquery.d.ts" />
interface Hub {
    id: string;
    state: any;
    start(options?: any, callback?: () => any): JQueryPromise;
}

interface SignalR {    
    log(msg: string, logging: bool): void;
    isCrossDomain(url: string): bool;
    changeState(connection: any, expectedState: number, newState: number): bool;
    isDisconnecting(connection: any): bool;

    hub: Hub;
    connection: HubConnection;

    init(url, qs, logging): void;
    ajaxDataType: string;
    logging: bool;
    reconnectDelay: number;
    state: any;
    start(options?: any, callback?: () => any): JQueryPromise;
    starting(callback?: () => any): SignalR;
    send (data): SignalR;
    sending (callback?: () => any): SignalR;
    received (callback?: (data) => any): SignalR;
    stateChanged (callback?: (data) => any): SignalR;
    error (callback?: (data) => any): SignalR;
    disconnected (callback?: () => any): SignalR;
    reconnected (callback?: () => any): SignalR;
    stop (async? : bool): SignalR;
}

interface HubConnection extends SignalR {
    hub: Hub;
}

// extend JQuery interface
interface JQueryStatic {
    signalR: SignalR;
    connection: SignalR;
}

次に、ハブのコントラクトを定義することができます。

/// <reference path="./jquery.signalR-0.5.3.d.ts" />

interface IMyHub extends HubConnection {
    // your methods definition here
}

// extend SignalR interface
interface SignalR {
    myHub: IMyHub;
}
于 2012-11-09T22:44:02.217 に答える
3

【セルフプラグ】

ハブ、メソッド、およびクライアントとサーバー間で渡す型の TypeScript 宣言ファイルを生成するツールを作成しました。これには、最新の FixedTyped signalr.d.ts ファイルも含まれています。Nuget パッケージとしてアルファ版をリリースしました: SignalR.TypeScript。このパッケージをインストールするには、パッケージ マネージャー コンソールで次のコマンドを実行します。

Install-Package SignalR.TypeScript -Pre 

私のブログの詳細とハウツー: http://murat.girc.in/2013/11/introducing-signalr-typescript/

【/セルフプラグ】

于 2013-11-13T06:12:21.190 に答える
2

それは好きでした:

interface signalR extends JQueryStatic {
     connection;
}

var hub = (<signalR>$).connection.myHub
于 2012-11-09T19:03:51.517 に答える