繁体   English   中英

带WebSocket的TypeScript

[英]TypeScript with WebSocket

我有一个webapp,在webapp中应用了JavaScript和websocket,

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

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

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

这是代码:

var Socket = window.WebSocket || window.MozWebSocket;

在JavaScript中它没关系,但在打字稿中它产生了错误,

我怎么解决这个问题? 或者Visual Studio 2012中是否有一种方法可以忽略错误,从而可以构建打字稿?

尝试访问以下属性:

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

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

我已更新我的答案,以跟上更新版本的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');

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

interface Window {
     WebSocket: any;
     MozWebSocket: any;
}

适用于TypeScript 0.8.3.0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM