diff --git a/react/react-tests.ts b/react/react-tests.ts index 13e2ab12f0..aa7baa20a2 100644 --- a/react/react-tests.ts +++ b/react/react-tests.ts @@ -187,13 +187,17 @@ var domElement: React.ReactHTMLElement = // React.cloneElement var clonedElement: React.ReactElement = - React.cloneElement(element, props); + React.cloneElement(element, { foo: 43 }); var clonedStatelessElement: React.ReactElement = - React.cloneElement(statelessElement, props); + // known problem: cloning with optional props don't work properly + // workaround: cast to actual props type + React.cloneElement(statelessElement, { foo: 44 }); var clonedClassicElement: React.ClassicElement = React.cloneElement(classicElement, props); var clonedDOMElement: React.ReactHTMLElement = - React.cloneElement(domElement); + React.cloneElement(domElement, { + className: "clonedElement" + }); // React.render var component: React.Component = diff --git a/react/react.d.ts b/react/react.d.ts index 64dce7b600..bcdb37bbe8 100644 --- a/react/react.d.ts +++ b/react/react.d.ts @@ -92,17 +92,21 @@ declare namespace __React { props?: P, ...children: ReactNode[]): ReactElement

; - function cloneElement

( - element: DOMElement

, - props?: P, - ...children: ReactNode[]): DOMElement

; - function cloneElement

( + function cloneElement( + element: ReactHTMLElement, + props?: HTMLProps, + ...children: ReactNode[]): ReactHTMLElement; + function cloneElement( + element: ReactSVGElement, + props?: SVGProps, + ...children: ReactNode[]): ReactSVGElement; + function cloneElement

( element: ClassicElement

, - props?: P, + props?: Q, ...children: ReactNode[]): ClassicElement

; - function cloneElement

( + function cloneElement

( element: ReactElement

, - props?: P, + props?: Q, ...children: ReactNode[]): ReactElement

; function isValidElement(object: {}): boolean;