From 51b6fad2472eb1ec752b32c4b9e9a2b896347ce3 Mon Sep 17 00:00:00 2001 From: Phips Peter Date: Fri, 17 Oct 2014 13:22:14 -0700 Subject: [PATCH] Adding the new Element types https://gist.github.com/sebmarkbage/fcb1b6ab493b0c77d589 --- react-addons/react-addons.d.ts | 8 ++-- react/react.d.ts | 86 +++++++++++++++++++++++++++------- 2 files changed, 74 insertions(+), 20 deletions(-) diff --git a/react-addons/react-addons.d.ts b/react-addons/react-addons.d.ts index 09ea7257a..e4041a073 100644 --- a/react-addons/react-addons.d.ts +++ b/react-addons/react-addons.d.ts @@ -13,12 +13,12 @@ declare module React { export var addons: { classSet: (classes: {[key: string]: boolean}) => string; cloneWithProps: CloneWithProps; - CSSTransitionGroup: Factory; + CSSTransitionGroup: ReactFactory; LinkedStateMixin: LinkedStateMixin; Perf: Perf; PureRenderMixin: Mixin; TestUtils: TestUtils; - TransitionGroup: Factory; + TransitionGroup: ReactFactory; update(object: Object, changes: Object): Object; }; @@ -80,8 +80,8 @@ declare module React { export interface TestUtils { Simulate: Simulate; renderIntoDocument(instance: Descriptor): Descriptor; - mockComponent(componentClass: Factory, mockTagName?: string): TestUtils; - isDescriptorOfType(descriptor: Descriptor, componentClass: Factory): boolean; + mockComponent(componentClass: ReactFactory, mockTagName?: string): TestUtils; + isDescriptorOfType(descriptor: Descriptor, componentClass: ReactFactory): boolean; isDOMComponent(instance: Descriptor): boolean; isCompositeComponent(instance: Descriptor): boolean; isCompositeComponentWithType(instance: Descriptor, componentClass: Function): boolean; diff --git a/react/react.d.ts b/react/react.d.ts index eb7b4989b..407605944 100644 --- a/react/react.d.ts +++ b/react/react.d.ts @@ -4,33 +4,93 @@ // Definitions: https://github.com/borisyankov/DefinitelyTyped declare module "react" { - export = React; +export = React; } declare module React { - export function createClass(specification: Specification): Factory

; + export function createClass(specification: Specification): ReactComponentFactory

; - export function render

(component: Descriptor

, container: Element, callback?: () => void): Descriptor

; + export function render

(component: ReactComponentElement

, container: Element, callback?: () => void): ReactComponentElement

; + + export function render(component: ReactHTMLElement, container: Element, callback?: () => void): ReactHTMLElement; + + export function render(component: ReactSVGElement, container: Element, callback?: () => void): ReactSVGElement; export function unmountComponentAtNode(container: Element): boolean; - export function renderToString(component: Descriptor): string; + export function renderToString

(component: ReactComponentElement

): string; - export function renderToStaticMarkup(component: Descriptor): string; + export function renderToString(component: ReactHTMLElement): string; - export function isValidClass(factory: Factory): boolean; + export function renderToString(component: ReactSVGElement): string; - export function isValidElement(component: Descriptor): boolean; + export function renderToStaticMarkup

(component: ReactComponentElement

): string; + + export function renderToStaticMarkup(component: ReactHTMLElement): string; + + export function renderToStaticMarkup(component: ReactSVGElement): string; + + export function isValidClass(factory: ReactComponentElement): boolean; + + export function isValidElement(component: ReactHTMLElement): boolean; + + export function isValidElement(component: ReactSVGElement): boolean; export function initializeTouchEvents(shouldUseTouch: boolean): void; + export interface ReactFactory { + (properties: P, ...children: any[]): E; + } + + export interface ReactComponentFactory

extends ReactFactory> { + } + + export interface ReactElementFactory> extends ReactFactory { + } + + export interface DomElement extends ReactElementFactory { + } + + export interface SvgElement extends ReactElementFactory { + } + + export interface ReactClass

{ + (props: P): ReactComponent

; + } + + export interface ReactComponent

{ + props: P; + render(): ReactElement; + } + + export interface ReactElement { + type: any; + props: any; + key: string; + ref: string; + } + + export interface ReactDOMElement

extends ReactElement { + type: string; + props: P; + } + + export interface ReactHTMLElement extends ReactDOMElement { + } + + export interface ReactSVGElement extends ReactDOMElement { + } + + export interface ReactComponentElement

extends ReactElement { + type: ReactClass

; + props: P; + } + export interface Descriptor

{ props: P; } - export interface Factory

{ - (properties?: P, ...children: any[]): Descriptor

; - } + export interface Mixin { componentWillMount?(): void; @@ -411,12 +471,6 @@ declare module React { y?: any; } - export interface DomElement extends Factory { - } - - export interface SvgElement extends Factory { - } - export var DOM: { // HTML a: DomElement;