ค้นหาเว็บไซต์

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;
}

บทความที่เกี่ยวข้อง