From 12522af29a9bcd3c6ffbefbe8a7ca08bec161ad4 Mon Sep 17 00:00:00 2001 From: smhxx Date: Tue, 2 Jan 2018 14:15:57 -0600 Subject: [PATCH] [atom] add type guarding to isFile() and isDirectory() methods (#22591) --- types/atom/atom-tests.ts | 11 +++++++++++ types/atom/index.d.ts | 8 ++++---- 2 files changed, 15 insertions(+), 4 deletions(-) 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;