diff --git a/types/atom/atom-tests.ts b/types/atom/atom-tests.ts index 9bb03e4e60..8995bbd3fa 100644 --- a/types/atom/atom-tests.ts +++ b/types/atom/atom-tests.ts @@ -32,6 +32,7 @@ declare let editor: Atom.TextEditor; declare let editors: Atom.TextEditor[]; declare let emitter: Atom.Emitter; declare let file: Atom.File; +declare let fileOrDir: Atom.File | Atom.Directory; declare let grammar: Atom.Grammar; declare let grammars: Atom.Grammar[]; declare let gutter: Atom.Gutter; @@ -966,6 +967,16 @@ function testFile() { file.writeSync("Test"); } +// File/Directory Type Guarding =============================================== +function testFileDirectoryTypeGuarding() { + if (fileOrDir.isFile()) { + file = fileOrDir; + } + if (fileOrDir.isDirectory()) { + dir = fileOrDir; + } +} + // GitRepository ============================================================== function testGitRepository() { // Construction and Destruction diff --git a/types/atom/index.d.ts b/types/atom/index.d.ts index b989671920..6cc3a30c77 100644 --- a/types/atom/index.d.ts +++ b/types/atom/index.d.ts @@ -3279,10 +3279,10 @@ export class Directory { // Directory Metadata /** Returns a boolean, always false. */ - isFile(): boolean; + isFile(): this is File; /** Returns a roolean, always true. */ - isDirectory(): boolean; + isDirectory(): this is Directory; /** Returns a boolean indicating whether or not this is a symbolic link. */ isSymbolicLink(): boolean; @@ -3496,10 +3496,10 @@ export class File { // File Metadata /** Returns a boolean, always true. */ - isFile(): boolean; + isFile(): this is File; /** Returns a boolean, always false. */ - isDirectory(): boolean; + isDirectory(): this is Directory; /** Returns a boolean indicating whether or not this is a symbolic link. */ isSymbolicLink(): boolean;