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