我已经开始使用 typescript,很容易找到 angular.js 和 jquery 的声明 (d.ts) 文件。虽然找不到 SignalR jquery 的。
你们能帮帮我吗。我可以创建一个界面,extends JQuery
但不知何故它不起作用......
var hub = $.connection.myHub
它在抱怨connection
事情......说“'JQueryStatic'类型的值不存在属性'连接'”
我已经开始使用 typescript,很容易找到 angular.js 和 jquery 的声明 (d.ts) 文件。虽然找不到 SignalR jquery 的。
你们能帮帮我吗。我可以创建一个界面,extends JQuery
但不知何故它不起作用......
var hub = $.connection.myHub
它在抱怨connection
事情......说“'JQueryStatic'类型的值不存在属性'连接'”
DefinitiveTyped 为SignalR提供了完整的 TypeScript 定义。
刚刚更新了链接,谢谢斯图尔特
这是我能够以一种快速而肮脏的方式准备的。请注意,它可能几乎不正确,但现在对我来说已经足够了,而且它似乎按预期工作。
开始可能是件好事。让我们称之为“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;
}
[自插]
我创建了一个工具来为您的集线器、方法以及您在客户端和服务器之间传递的类型生成 TypeScript 声明文件。它还包括最新的definitelyTyped signalr.d.ts 文件。我以 nuget 包的形式发布了 alpha 版本:SignalR.TypeScript。要安装此包,请在包管理器控制台中运行以下命令:
Install-Package SignalR.TypeScript -Pre
我的博客上的更多信息和操作方法:http: //murat.girg.in/2013/11/introducing-signalr-typescript/
[/自插]
是不是这样:
interface signalR extends JQueryStatic {
connection;
}
var hub = (<signalR>$).connection.myHub
这并不理想,但如果您需要将纯 signalR javascript 快速移动到 Typescript,您可以使用这样的接口(您仍然需要包含 signalr.d.ts 类型定义)。
interface SignalR {
messageHub: any;
}
var chat = $.connection.messageHub;
chat.client.actionMessage = function (data) {
console.info("actionMessage: received: message: " + data.message);
};