我一起使用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 - 進一步的證據沒有好的行爲不會受到懲罰:我只是在這個問題上發佈了我所遇到的問題:-)。 –