typescript - Egenskapen 'prototype' finnes ikke på typen


Jeg vil legge til en metode til prototypen til WebSocket. Men TypeScript gir en feilmelding som sier 'Egenskapen 'prototype' finnes ikke på typen '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) {}
};

Svar #1

I TypeScript er grensesnitt åpne for utvidelse. Det betyr at du kan legge til nye egenskaper på dem bare ved å erklære dem på flere steder, kompilatoren vil ta seg av å slå dem alle sammen til ett sammenhengende grensesnitt.

Som sådan er det du må gjøre for å legge til en ny egenskap på WebSocket-grensesnittet å erklære det grensesnittet på nytt med den ekstra egenskapen.

Slik:

interface WebSocket {
    json(param: string): any;

}

WebSocket.prototype.json = function (param: string) {
    return param;
}

Relaterte artikler