diff --git a/types/react/index.d.ts b/types/react/index.d.ts
index b0356ae4b6..577959ae7b 100644
--- a/types/react/index.d.ts
+++ b/types/react/index.d.ts
@@ -136,10 +136,14 @@ declare namespace React {
type: ClassType
): CFactory
;
function createFactory
(type: ComponentClass
): Factory
;
- function createElement
, T extends Element>(
- type: string,
+ function createElement
, T extends HTMLElement>(
+ type: keyof ReactHTML,
props?: ClassAttributes & P,
- ...children: ReactNode[]): DOMElement;
+ ...children: ReactNode[]): ReactHTMLElement;
+ function createElement, T extends SVGElement>(
+ type: keyof ReactSVG,
+ props?: ClassAttributes & P,
+ ...children: ReactNode[]): ReactSVGElement;
function createElement(
type: SFC
,
props?: Attributes & P,
@@ -2526,8 +2530,7 @@ declare namespace React {
// React.DOM
// ----------------------------------------------------------------------
- interface ReactDOM {
- // HTML
+ interface ReactHTML {
a: HTMLFactory;
abbr: HTMLFactory;
address: HTMLFactory;
@@ -2641,8 +2644,9 @@ declare namespace React {
"var": HTMLFactory;
video: HTMLFactory;
wbr: HTMLFactory;
+ }
- // SVG
+ interface ReactSVG {
svg: SVGFactory;
animate: SVGFactory;
circle: SVGFactory;
@@ -2666,6 +2670,8 @@ declare namespace React {
use: SVGFactory;
}
+ interface ReactDOM extends ReactHTML, ReactSVG { }
+
//
// React.PropTypes
// ----------------------------------------------------------------------
diff --git a/types/react/test/index.ts b/types/react/test/index.ts
index 77e46e49aa..27acc07d34 100644
--- a/types/react/test/index.ts
+++ b/types/react/test/index.ts
@@ -190,6 +190,8 @@ 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 });
// React.cloneElement
var clonedElement: React.CElement =