Vyhledávání na webu

javascript - TypeScript s WebSocket


Mám webovou aplikaci s JavaScriptem a websocketem použitým uvnitř webové aplikace,

Teď jsem chtěl zkusit přesunout svou webovou aplikaci na TypeScript, který je typově bezpečný,

Problém je, že když deklaruji a inicializuji websocket, TypeScript (ve Visual Studiu 2012) generuje chybu: „Vlastnost 'WebSocket' neexistuje na hodnotě typu 'Window'“

Ale v JavaScriptu websocket běží a žádná chyba se neobjevuje,

Toto je kód:

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

V JavaScriptu je to v pořádku, ale v TypeScriptu to vyvolalo chybu.

Jak to mohu vyřešit? Nebo existuje způsob ve Visual Studio 2012, jak chybu ignorovat, aby mohl být TypeScript sestaven?

Odpověď č. 1

Zkuste přistupovat k vlastnostem takto:

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

Použití indexeru řetězce obchází kontroly při kompilaci a umožňuje dynamické operace.

Odpověď č. 2

Aktualizoval jsem svou odpověď, aby byla v souladu se změnami v novějších verzích TypeScriptu...

Pokud je MozWebSocket totožný s WebSocket - můžete tento problém vyřešit tímto způsobem:

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

Související články