Búsqueda de sitios web

javascript - Typescript en node.js stream - extiende incorrectamente la clase base 'Transform'


import { Transform } from "stream";    
export class TestStream extends Transform {

        constructor(options) {
            super(options);
        }

        write(data: any, enc: string, cb: Function) {
            return super.write(data, enc, cb);
        }
    }

Estoy recibiendo el siguiente error en el código anterior.

La clase 'TestStream' extiende incorrectamente la clase base 'Transform'. Los tipos de la propiedad 'write' son incompatibles. El tipo '(data: any, enc: string, cb: Function) => boolean' no es asignable al tipo '{ (chunk: any, cb?: Function): boolean; (chunk: any, encoding?: string, cb?: Function): boolean; }'.

Respuesta #1

Dado que write soporta las siguientes sobrecargas:

write(chunk: any, cb?: Function): boolean;
write(chunk: any, encoding?: string, cb?: Function): boolean;

El segundo parámetro podría ser la codificación o la función de devolución de llamada. Tienes que manejarlo en tu código:

write(chunk: any, encodingOrCB?: string | Function, cb?: Function): boolean {
    if (typeof encodingOrCB == "string") {
        return super.write(chunk, encodingOrCB, cb);
    }
    else {
        return super.write(chunk, encodingOrCB);
    }        
}

Respuesta #2

estás sobrescribiendo la función write incorrectamente.

intentar

write(data: any, enc?: string, cb?: Function) {
    return super.write(data, enc, cb);
}

Nota ? se usa para parámetros opcionales