【发布时间】:2012-11-14 10:25:38
【问题描述】:
我同时使用 TypeScript 和 SignalR,并尝试为生成的 SignalR 类定义静态类型。如果我做这样的事情,它会起作用:
///<reference path="../Scripts/jquery-1.8.d.ts" />
///<reference path="../Scripts/signalr-1.0.d.ts" />
interface SignalR {
roomHub: Service.RoomHub;
}
module Service {
export var roomHub = $.connection.roomHub;
export interface RoomHub { }
}
当然$.connection 是SignalR 类型,它在文件“signalr-1.0.d.ts”中定义,并在上面的文件中扩展。
但是,我需要能够从其他文件中引用Service模块,所以我需要在模块和接口中添加“export”关键字,即:
///<reference path="../Scripts/jquery-1.8.d.ts" />
///<reference path="../Scripts/signalr-1.0.d.ts" />
export interface SignalR {
roomHub: Service.RoomHub;
}
export module Service {
// Error here: "The property 'roomHub' does not exist on type SignalR."
export var roomHub = $.connection.roomHub;
export interface RoomHub { }
}
但是,当我这样做时,$.connection.roomHub 下会出现一条红色的波浪线,并且编译器会返回错误“SignalR 类型上不存在属性 'roomHub'。”
我当然不了解有关 TypeScript 的所有内容,但这对我来说似乎不正确。我遇到了编译器错误吗?还是有其他方法可以做到这一点?
【问题讨论】:
-
有点切题,但我想你可能会感兴趣,我写了一个 T4 模板来从你的集线器生成 .d.ts:gist.github.com/4583549
-
@RobFonseca-Ensor - 进一步证明没有善行会受到惩罚:我刚刚在 Gist 上发布了我遇到的问题 :-)。
标签: signalr typescript