[React] change createElement declaration (#19858)

* fix https://github.com/Microsoft/TypeScript/issues/15019

* change the stable v15 declaration too

* catch-all case also take string

* add string for test
This commit is contained in:
York Yao
2017-09-26 01:14:17 +09:00
committed by Masahiro Wakame
parent e835076e1e
commit 29ca22c8b0
4 changed files with 14 additions and 2 deletions
+1 -1
View File
@@ -216,7 +216,7 @@ declare namespace React {
props?: ClassAttributes<T> & P,
...children: ReactNode[]): CElement<P, T>;
function createElement<P>(
type: ComponentClass<P>,
type: SFC<P> | ComponentClass<P> | string,
props?: Attributes & P,
...children: ReactNode[]): ReactElement<P>;
+6
View File
@@ -193,6 +193,12 @@ const customProps: React.HTMLProps<HTMLElement> = props;
const customDomElement = "my-element";
const nonLiteralElement = React.createElement(customDomElement, customProps);
// https://github.com/Microsoft/TypeScript/issues/15019
function foo3(child: React.ComponentClass<{ name: string }> | React.StatelessComponent<{ name: string }> | string) {
React.createElement(child, { name: "bar" });
}
// React.cloneElement
const clonedElement: React.CElement<Props, ModernComponent> = React.cloneElement(element, { foo: 43 });
+1 -1
View File
@@ -223,7 +223,7 @@ declare namespace React {
props?: ClassAttributes<T> & P,
...children: ReactNode[]): CElement<P, T>;
function createElement<P>(
type: ComponentClass<P>,
type: SFC<P> | ComponentClass<P> | string,
props?: Attributes & P,
...children: ReactNode[]): ReactElement<P>;
+6
View File
@@ -193,6 +193,12 @@ const customProps: React.HTMLProps<HTMLElement> = props;
const customDomElement = "my-element";
const nonLiteralElement = React.createElement(customDomElement, customProps);
// https://github.com/Microsoft/TypeScript/issues/15019
function foo3(child: React.ComponentClass<{ name: string }> | React.StatelessComponent<{ name: string }> | string) {
React.createElement(child, { name: "bar" });
}
// React.cloneElement
const clonedElement: React.CElement<Props, ModernComponent> = React.cloneElement(element, { foo: 43 });