typescript - ไม่มีคุณสมบัติ 'prototype' บนประเภท
ฉันต้องการเพิ่มเมธอดไปยังโปรโตไทป์ของ WebSocket แต่ TypeScript ให้ข้อผิดพลาดบอกว่า 'Property 'prototype' does not exist on type 'WebSocketExtended''
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;
}
