typescript - 型に 'prototype' プロパティは存在しません
WebSocket のプロトタイプにメソッドを追加したいです。しかし、TypeScript は「'WebSocketExtended' 型には 'prototype' プロパティが存在しません」というエラーを出します。
const WS: WebSocketExtended = require('ws');
import {Server} from 'ws';
let ws: Server;
interface WebSocketExtended extends WebSocket {
json(d: any): void
}
export function start(server){
ws = new Server({server: server});
ws.on('connection', onConnection);
};
function onConnection(socket:WebSocketExtended) {
socket.json({data:'some data'});
}
WS.prototype.json = function (d) {
try {
d = JSON.stringify(d);
this.send(d);
} catch (e) {}
};
回答 #1
TypeScriptでは、インターフェースは拡張可能です。つまり、複数の場所で宣言するだけで新しいプロパティを追加でき、コンパイラがそれらをすべて統合して一つの矛盾のないインターフェースにまとめてくれます。
したがって、WebSocket インターフェースに新しいプロパティを追加するために必要なことは、追加のプロパティを持つそのインターフェースを再宣言することです。
こんな感じ:
interface WebSocket {
json(param: string): any;
}
WebSocket.prototype.json = function (param: string) {
return param;
}
