diff --git a/types/node/v6/index.d.ts b/types/node/v6/index.d.ts index 34fce92f77..0b356d0415 100644 --- a/types/node/v6/index.d.ts +++ b/types/node/v6/index.d.ts @@ -281,8 +281,8 @@ declare namespace NodeJS { readable: boolean; read(size?: number): string | Buffer; setEncoding(encoding: string | null): void; - pause(): ReadableStream; - resume(): ReadableStream; + pause(): this; + resume(): this; isPaused(): boolean; pipe(destination: T, options?: { end?: boolean; }): T; unpipe(destination?: T): void; @@ -301,10 +301,7 @@ declare namespace NodeJS { end(str: string, encoding?: string, cb?: Function): void; } - export interface ReadWriteStream extends ReadableStream, WritableStream { - pause(): ReadWriteStream; - resume(): ReadWriteStream; - } + export interface ReadWriteStream extends ReadableStream, WritableStream {} export interface Events extends EventEmitter { } @@ -1431,8 +1428,8 @@ declare module "readline" { setPrompt(prompt: string): void; prompt(preserveCursor?: boolean): void; question(query: string, callback: (answer: string) => void): void; - pause(): ReadLine; - resume(): ReadLine; + pause(): this; + resume(): this; close(): void; write(data: string | Buffer, key?: Key): void; @@ -1952,8 +1949,6 @@ declare module "net" { setEncoding(encoding?: string): void; write(data: any, encoding?: string, callback?: Function): void; destroy(): void; - pause(): Socket; - resume(): Socket; setTimeout(timeout: number, callback?: Function): void; setNoDelay(noDelay?: boolean): void; setKeepAlive(enable?: boolean, initialDelay?: number): void; @@ -3446,8 +3441,8 @@ declare module "stream" { _read(size: number): void; read(size?: number): any; setEncoding(encoding: string): void; - pause(): Readable; - resume(): Readable; + pause(): this; + resume(): this; isPaused(): boolean; pipe(destination: T, options?: { end?: boolean; }): T; unpipe(destination?: T): void; diff --git a/types/node/v6/node-tests.ts b/types/node/v6/node-tests.ts index 6023217947..ea5bbb907e 100644 --- a/types/node/v6/node-tests.ts +++ b/types/node/v6/node-tests.ts @@ -542,6 +542,32 @@ function simplified_stream_ctor_test() { }) } +// Subclassing stream classes +{ + class SubclassedReadable extends stream.Readable {}; + + let subclassedReadable: SubclassedReadable = new SubclassedReadable(); + subclassedReadable = subclassedReadable.pause(); + subclassedReadable = subclassedReadable.resume(); + + class SubclassedTransform extends stream.Transform {}; + + let subclassedTransform: SubclassedTransform = new SubclassedTransform(); + subclassedTransform = subclassedTransform.pause(); + subclassedTransform = subclassedTransform.resume(); + + class SubclassedDuplex extends stream.Duplex {}; + + let subclassedDuplex: SubclassedDuplex = new SubclassedDuplex(); + subclassedDuplex = subclassedDuplex.pause(); + subclassedDuplex = subclassedDuplex.resume(); + + // assignability + let readable: stream.Readable = subclassedDuplex; + readable = subclassedTransform; + let duplex: stream.Duplex = subclassedTransform; +} + //////////////////////////////////////////////////////// /// Crypto tests : http://nodejs.org/api/crypto.html /// ////////////////////////////////////////////////////////