node.js流上的Typescript - 错误地扩展了基类'Transform'

时间:2017-06-22 08:29:15

标签: javascript typescript node.js-stream

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

我在上面的代码中遇到以下错误。

类'TestStream'错误地扩展了基类'Transform'。   属性'write'的类型是不兼容的。     输入'(data:any,enc:string,cb:Function)=> boolean'不能赋值给'{(chunk:any,cb?:Function):boolean; (chunk:any,encoding?:string,cb?:Function):boolean; }”。

2 个答案:

答案 0 :(得分:4)

由于write支持以下重载:

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

第二个参数可以是编码或回调。你必须在你的代码中处理它:

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

答案 1 :(得分:0)

您错误地覆盖了write函数。

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

注意?它用于可选参数