我一起使用TypeScript和SignalR,并试图为生成的SignalR类定义静态类型。如果我做这样的事情,它的工作原理:导出TypeScript模块导致接口未被拾取
///<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
模块,所以我需要“出口”的关键字添加到模块和接口两种,即:
///<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
下得到了一条红色的波浪线,并且编译器返回错误信息:“属性'roomHub'在类型SignalR上不存在。”
我当然不明白关于TypeScript的一切,但这对我来说并不合适。我遇到了一个编译器错误?还是有不同的方式来做到这一点?
轻微的切线,但我认为你可能会感兴趣,我写了一个T4模板从你的集线器生成.d.ts:https://gist.github.com/4583549 –
@ RobFonseca-Ensor - 进一步的证据没有好的行为不会受到惩罚:我只是在这个问题上发布了我所遇到的问题:-)。 –