Búsqueda de sitios web

typescript - archivo de declaración de SignalR typescripf


He empezado a usar TypeScript, encontré fácilmente archivos de declaración (d.ts) para Angular.js y jQuery. Sin embargo, no puedo encontrar uno para SignalR jQuery.

¿Pueden ayudarme, chicos? Podría simplemente crear una interfaz que extienda JQuery, pero de alguna manera no está funcionando...

var hub = $.connection.myHub

se está quejando sobre la cosa connection... dice "La propiedad 'connection' no existe en el valor de tipo 'JQueryStatic'"

Respuesta #1

DefinitelyTyped tiene una definición completa de TypeScript para SignalR.

Acabo de actualizar el enlace, gracias Stuart

Respuesta #2

Esto es lo que pude preparar de manera rápida y sencilla. Ten en cuenta que probablemente apenas sea correcto, pero es suficiente para mí en este momento, y parece funcionar como se pretende.

Podría ser algo bueno con lo que empezar. Llamémoslo "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;
}

entonces quizá quieras definir un contrato para tu hub:

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

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

// extend SignalR interface
interface SignalR {
    myHub: IMyHub;
}

Artículos relacionados