diff --git a/types/cloneable-readable/cloneable-readable-tests.ts b/types/cloneable-readable/cloneable-readable-tests.ts index d6cf68f33d..5f65dc5594 100644 --- a/types/cloneable-readable/cloneable-readable-tests.ts +++ b/types/cloneable-readable/cloneable-readable-tests.ts @@ -9,3 +9,7 @@ process.stdin.pipe(cl).pipe(process.stdout); cloneable.isCloneable(ps); // $ExpectType boolean cloneable.isCloneable(cl); // $ExpectType boolean + +if (cloneable.isCloneable(ps)) { + ps; // $ExpectType PassThrough & Readable & { clone(): Cloneable; } +} diff --git a/types/cloneable-readable/index.d.ts b/types/cloneable-readable/index.d.ts index 49f7c89ffd..0683fcaf36 100644 --- a/types/cloneable-readable/index.d.ts +++ b/types/cloneable-readable/index.d.ts @@ -1,6 +1,7 @@ -// Type definitions for cloneable-readable 1.1 +// Type definitions for cloneable-readable 2.0 // Project: https://github.com/mcollina/cloneable-readable#readme // Definitions by: Nikita Volodin +// Oleg Vaskevich // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.2 @@ -8,10 +9,15 @@ import { Readable } from 'stream'; -type Cloneable = T & { clone(): Cloneable }; -interface CloneableFn { - (x: T): Cloneable; - isCloneable(x: Readable): boolean; +declare namespace cloneable { + type Cloneable = T & { clone(): Cloneable }; } + +interface CloneableFn { + (x: T): cloneable.Cloneable; + isCloneable(x: Readable): x is cloneable.Cloneable; +} + declare const cloneable: CloneableFn; + export = cloneable;