Javascript 带WebSocket的TypeScript

Javascript 带WebSocket的TypeScript,javascript,html,websocket,visual-studio-2012,typescript,Javascript,Html,Websocket,Visual Studio 2012,Typescript,我有一个应用了JavaScript和websocket的webapp 现在,我想尝试将我的webapp移动到类型安全的typescript 问题是,当我声明并初始化websocket时, 类型脚本(在visual studio 2012中)生成错误: “类型为'Window'的值上不存在属性'WebSocket'” 但是在JavaScript中,websocket正在运行并且没有错误 代码如下: var Socket = window.WebSocket || window.MozWebSock

我有一个应用了JavaScript和websocket的webapp

现在,我想尝试将我的webapp移动到类型安全的typescript

问题是,当我声明并初始化websocket时, 类型脚本(在visual studio 2012中)生成错误: “类型为'Window'的值上不存在属性'WebSocket'”

但是在JavaScript中,websocket正在运行并且没有错误

代码如下:

var Socket = window.WebSocket || window.MozWebSocket;
在JavaScript中没有问题,但在typescript中产生了错误


我怎样才能解决这个问题?或者在Visual Studio 2012中有没有办法忽略此错误以便生成typescript?

我已经更新了答案,以跟上typescript新版本的更改

如果MozWebSocket与WebSocket相同,则可以通过以下方式解决此问题:

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');

尝试访问以下属性:

var Socket = window['WebSocket'] || window['MozWebSocket'];

使用字符串索引器可以绕过编译时验证并允许动态操作。

您可以扩展窗口定义(称之为“window.extend.d.ts”):


使用TypeScript 0.8.3.0时,错误仍然存在,我检查了lib.d.ts,没有MozWebSocket,而且,如果我用websocket完全声明接口,我不会得到任何重复声明的错误。其他代码只是提示和字符串格式的简单代码,但错误只出现在窗口中。websocket,如果vs2012中有一种方法可以关闭抛出的异常,那就没问题了。Steve,请您详细说明一下
声明接口
语法。如果我将您的代码段添加到我的.ts文件中,我会得到一个错误,即declare关键字“不能出现在接口声明中”。实际上,“declare interface”根本不出现在lib.d.ts文件或TypeScript语言规范中。还有一件事,为什么要将WebSocket和MozWebSocket键入any,为什么不将它们键入WebSocket?我已经更新了答案,以匹配TypeScript 0.9.1.1中的语言和lib.d.ts
interface Window {
     WebSocket: any;
     MozWebSocket: any;
}