TypeScript with WebSocket
我有一个Web应用程序,该Web应用程序在Web应用程序中应用了JavaScript和websocket,
现在,我想尝试将我的Web应用程序移至安全类型为TypeScript的Typescript,
问题是,当我声明并初始化websocket时,
打字稿(在Visual Studio 2012中)生成错误:
"类型'Window'的值不存在属性'WebSocket'"
但是在JavaScript中,websocket正在运行,并且没有错误,
这是代码:
1 | var Socket = window.WebSocket || window.MozWebSocket; |
在JavaScript中可以,但是在打字稿中会产生错误,
我该如何解决? 还是在Visual Studio 2012中有一种方法可以忽略该错误,以便可以构建打字稿?
尝试像这样访问属性:
1 | var Socket = window['WebSocket'] || window['MozWebSocket']; |
使用字符串索引器可避免编译时验证,并允许进行动态操作。
我已经更新了答案,以适应新版本TypeScript的更改。
如果MozWebSocket与WebSocket相同-您可以通过以下方式解决问题:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | declare var MozWebSocket: { prototype: WebSocket; new (url: string): WebSocket; new (url: string, prototcol: string): WebSocket; new (url: string, prototcol: string[]): WebSocket; OPEN: number; CLOSING: number; CONNECTING: number; CLOSED: number; } var Socket: typeof WebSocket = WebSocket || MozWebSocket; var socket = new WebSocket('url'); |
您可以扩展窗口定义(称为" window.extend.d.ts"):
1 2 3 4 | interface Window { WebSocket: any; MozWebSocket: any; } |
与TypeScript 0.8.3.0一起使用