From b7320ce400d9917ea54d9c95f076db27ccade721 Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Tue, 9 Jun 2015 03:23:28 +0100 Subject: [PATCH] add t.createTypeAnnotationBasedOnTypeof method --- src/babel/traversal/path/resolution.js | 15 +-------------- src/babel/types/flow.js | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 14 deletions(-) diff --git a/src/babel/traversal/path/resolution.js b/src/babel/traversal/path/resolution.js index f561587253..00b1efce23 100644 --- a/src/babel/traversal/path/resolution.js +++ b/src/babel/traversal/path/resolution.js @@ -177,20 +177,7 @@ function checkBinary(name, path) { if (!typeofPath.get("argument").isIdentifier({ name })) return; // turn type value into a type annotation - var value = typePath.node.value; - if (value === "string") { - return t.stringTypeAnnotation(); - } else if (value === "number") { - return t.numberTypeAnnotation(); - } else if (value === "undefined") { - return t.voidTypeAnnotation(); - } else if (value === "boolean") { - return t.booleanTypeAnnotation(); - } else if (value === "function") { - // todo - } else if (value === "object") { - // todo - } + return t.createTypeAnnotationBasedOnTypeof(typePath.node.value); } function getParentConditional(path) { diff --git a/src/babel/types/flow.js b/src/babel/types/flow.js index 9414091ae8..d734f8385f 100644 --- a/src/babel/types/flow.js +++ b/src/babel/types/flow.js @@ -15,6 +15,10 @@ export function createUnionTypeAnnotation(types) { } } +/** + * Description + */ + export function removeTypeDuplicates(nodes) { var generics = {}; var bases = {}; @@ -90,3 +94,23 @@ export function removeTypeDuplicates(nodes) { return types; } + +/** + * Description + */ + +export function createTypeAnnotationBasedOnTypeof(type) { + if (value === "string") { + return t.stringTypeAnnotation(); + } else if (value === "number") { + return t.numberTypeAnnotation(); + } else if (value === "undefined") { + return t.voidTypeAnnotation(); + } else if (value === "boolean") { + return t.booleanTypeAnnotation(); + } else if (value === "function") { + // todo + } else if (value === "object") { + // todo + } +}