关于javascript:带WebSocket的TypeScript

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一起使用