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