From 15b7bac31972fbc081028937dfb1487507ca5fc9 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Wed, 28 Jun 2017 15:00:56 -0700 Subject: [PATCH] Add a string-fallback overload to React.createElement The types aren't quite as nice as when providing a string literal like "div" or "input", but it works as well as it did before the string-literal-overload change in #17507. --- types/react/index.d.ts | 4 ++++ types/react/test/index.ts | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/types/react/index.d.ts b/types/react/index.d.ts index 577959ae7b..6ce2919510 100644 --- a/types/react/index.d.ts +++ b/types/react/index.d.ts @@ -144,6 +144,10 @@ declare namespace React { type: keyof ReactSVG, props?: ClassAttributes & P, ...children: ReactNode[]): ReactSVGElement; + function createElement

, T extends Element>( + type: string, + props?: ClassAttributes & P, + ...children: ReactNode[]): DOMElement; function createElement

( type: SFC

, props?: Attributes & P, diff --git a/types/react/test/index.ts b/types/react/test/index.ts index 27acc07d34..66b8c24bac 100644 --- a/types/react/test/index.ts +++ b/types/react/test/index.ts @@ -190,8 +190,12 @@ var classicElement: React.ClassicElement = React.createElement(ClassicComponent, props); var domElement: React.ReactHTMLElement = React.createElement("div"); -var htmlElement = React.createElement("input", { type: "text" }); -var svgElement = React.createElement("svg", { accentHeight: 12 }); +var literalHtmlElement = React.createElement("input", { type: "text" }); +var literalSvgElement = React.createElement("svg", { accentHeight: 12 }); + +declare let cardhtml: React.HTMLProps; +declare let accessKey: string; +var nonLiteralElement = React.createElement(accessKey, cardhtml); // React.cloneElement var clonedElement: React.CElement =