SignalR typescripf声明文件

iLe*_*ing 11 signalr typescript

我已经开始使用typescript,很容易找到angular.js和jquery的声明(d.ts)文件.但是找不到SignalR jquery.

你们能帮助我吗?我可以创建一个界面,extends JQuery但不知怎的,它不起作用......

var hub = $.connection.myHub
Run Code Online (Sandbox Code Playgroud)

它抱怨的connection事情...说"属性'连接'不存在于'JQueryStatic'类型的值"

Geo*_*kis 16

DefinitelyTyped具有SignalR的完整TypeScript定义.

刚刚更新了链接,感谢Stuart

  • 有没有人举例说明如何使用Defintly Typed的def与Typescript? (3认同)

Sla*_*wek 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;
}
Run Code Online (Sandbox Code Playgroud)

那么你可能想为你的中心定义合同:

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

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

// extend SignalR interface
interface SignalR {
    myHub: IMyHub;
}
Run Code Online (Sandbox Code Playgroud)