From 69a3c976552155ad7b5c7aa15413d3f8d9c8e392 Mon Sep 17 00:00:00 2001 From: Vincent Siao Date: Fri, 6 Mar 2015 00:49:22 -0800 Subject: [PATCH] Rename React.XXXBase types to React.XXX to simplify general typing --- react/future/react-0.13.0-tests.ts | 4 +- react/future/react-0.13.0.d.ts | 72 ++++++++------- react/future/react-addons-0.13.0-tests.ts | 4 +- react/future/react-addons-0.13.0.d.ts | 93 +++++++++++--------- react/future/react-addons-global-0.13.0.d.ts | 23 +++-- react/future/react-global-0.13.0.d.ts | 72 ++++++++------- 6 files changed, 143 insertions(+), 125 deletions(-) diff --git a/react/future/react-0.13.0-tests.ts b/react/future/react-0.13.0-tests.ts index d54fb45d68..cf216503e8 100644 --- a/react/future/react-0.13.0-tests.ts +++ b/react/future/react-0.13.0-tests.ts @@ -130,7 +130,7 @@ var domFactoryElement: React.ReactDOMElement = domFactory(); // React.createElement -var element: React.ReactElement = +var element: React.ReactModernElement = React.createElement(ModernComponent, props); var classicElement: React.ReactClassicElement = React.createElement(ClassicComponent, props); @@ -138,7 +138,7 @@ var domElement: React.ReactHTMLElement = React.createElement("div"); // React.cloneElement -var clonedElement: React.ReactElement = +var clonedElement: React.ReactModernElement = React.cloneElement(element, props); var clonedClassicElement: React.ReactClassicElement = React.cloneElement(classicElement, props); diff --git a/react/future/react-0.13.0.d.ts b/react/future/react-0.13.0.d.ts index 80ce5ce88b..f87bdc7211 100644 --- a/react/future/react-0.13.0.d.ts +++ b/react/future/react-0.13.0.d.ts @@ -8,26 +8,29 @@ declare module "react" { // React Elements // ---------------------------------------------------------------------- - interface ReactElementBase { - type: string | ComponentClassBase

; + type ReactType = ComponentClass | string; + + interface ReactElement

{ + type: string | ComponentClass

; props: P; key: string | number; - ref: string | ((component: T) => any); + ref: string | ((component: Component) => any); } - interface ReactElement

- extends ReactElementBase, P> { - type: ComponentClass; + interface ReactModernElement

extends ReactElement

{ + type: ModernComponentClass; + ref: string | ((component: Component) => any); } - interface ReactClassicElement

- extends ReactElementBase, P> { + interface ReactClassicElement

extends ReactElement

{ type: string | ClassicComponentClass; + ref: string | ((component: ClassicComponent) => any); } - interface ReactDOMElement

// subtype of ReactClassicElement - extends ReactElementBase, P> { + // subtype of ReactClassicElement + interface ReactDOMElement

extends ReactElement

{ type: string; + ref: string | ((component: DOMComponent

) => any); } type ReactHTMLElement = ReactDOMElement; @@ -41,11 +44,15 @@ declare module "react" { (props?: P, ...children: ReactNode[]): ReactElement

; } - interface ClassicFactory

{ + interface ModernFactory

extends Factory

{ + (props?: P, ...children: ReactNode[]): ReactModernElement

; + } + + interface ClassicFactory

extends Factory

{ (props?: P, ...children: ReactNode[]): ReactClassicElement

; } - interface DOMFactory

{ + interface DOMFactory

extends Factory

{ (props?: P, ...children: ReactNode[]): ReactDOMElement

; } @@ -58,7 +65,7 @@ declare module "react" { // ---------------------------------------------------------------------- type ReactText = string | number; - type ReactChild = ReactElementBase | ReactText; + type ReactChild = ReactElement | ReactText; // Should be Array but type aliases cannot be recursive type ReactFragment = {} | Array; @@ -68,15 +75,12 @@ declare module "react" { // Top Level API // ---------------------------------------------------------------------- - function createClass( - spec: ComponentSpec): ClassicComponentClass; + function createClass(spec: ComponentSpec): ClassicComponentClass; - function createFactory

( - type: string): DOMFactory

; - function createFactory

( - type: ClassicComponentClass | string): ClassicFactory

; - function createFactory

( - type: ComponentClass): Factory

; + function createFactory

(type: string): DOMFactory

; + function createFactory

(type: ClassicComponentClass | string): ClassicFactory

; + function createFactory

(type: ModernComponentClass): ModernFactory

; + function createFactory

(type: ComponentClass

): Factory

; function createElement

( type: string, @@ -87,21 +91,25 @@ declare module "react" { props?: P, ...children: ReactNode[]): ReactClassicElement

; function createElement

( - type: ComponentClass, + type: ModernComponentClass, props?: P, - ...children: ReactNode[]): ReactElement

; + ...children: ReactNode[]): ReactModernElement

; function cloneElement

( element: ReactDOMElement

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

; function cloneElement

( element: ReactClassicElement

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

; + function cloneElement

( + element: ReactModernElement

, + props?: P, + ...children: ReactNode[]): ReactModernElement

; function cloneElement

( element: ReactElement

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

; function render

( @@ -118,8 +126,8 @@ declare module "react" { callback?: () => any): Component; function unmountComponentAtNode(container: Element): boolean; - function renderToString(element: ReactElementBase): string; - function renderToStaticMarkup(element: ReactElementBase): string; + function renderToString(element: ReactElement): string; + function renderToStaticMarkup(element: ReactElement): string; function isValidElement(object: {}): boolean; function initializeTouchEvents(shouldUseTouch: boolean): void; @@ -175,18 +183,18 @@ declare module "react" { // Class Interfaces // ---------------------------------------------------------------------- - interface ComponentClassBase

{ + interface ComponentClass

{ propTypes?: ValidationMap

; contextTypes?: ValidationMap; childContextTypes?: ValidationMap; } - interface ComponentClass extends ComponentClassBase

{ + interface ModernComponentClass extends ComponentClass

{ new(props?: P, context?: any): Component; defaultProps?: P; } - interface ClassicComponentClass extends ComponentClassBase

{ + interface ClassicComponentClass extends ComponentClass

{ new(props?: P, context?: any): ClassicComponent; getDefaultProps?(): P; displayName?: string; @@ -222,7 +230,7 @@ declare module "react" { } interface ComponentSpec extends Mixin { - render(): ReactElementBase; + render(): ReactElement; } // diff --git a/react/future/react-addons-0.13.0-tests.ts b/react/future/react-addons-0.13.0-tests.ts index 13419f12f4..ff6889ec0f 100644 --- a/react/future/react-addons-0.13.0-tests.ts +++ b/react/future/react-addons-0.13.0-tests.ts @@ -128,7 +128,7 @@ var domFactoryElement: React.ReactDOMElement = domFactory(); // React.createElement -var element: React.ReactElement = +var element: React.ReactModernElement = React.createElement(ModernComponent, props); var classicElement: React.ReactClassicElement = React.createElement(ClassicComponent, props); @@ -136,7 +136,7 @@ var domElement: React.ReactHTMLElement = React.createElement("div"); // React.cloneElement -var clonedElement: React.ReactElement = +var clonedElement: React.ReactModernElement = React.cloneElement(element, props); var clonedClassicElement: React.ReactClassicElement = React.cloneElement(classicElement, props); diff --git a/react/future/react-addons-0.13.0.d.ts b/react/future/react-addons-0.13.0.d.ts index d755bf9645..5148be3c6e 100644 --- a/react/future/react-addons-0.13.0.d.ts +++ b/react/future/react-addons-0.13.0.d.ts @@ -8,26 +8,29 @@ declare module "react/addons" { // React Elements // ---------------------------------------------------------------------- - interface ReactElementBase { - type: string | ComponentClassBase

; + type ReactType = ComponentClass | string; + + interface ReactElement

{ + type: string | ComponentClass

; props: P; key: string | number; - ref: string | ((component: T) => any); + ref: string | ((component: Component) => any); } - interface ReactElement

- extends ReactElementBase, P> { - type: ComponentClass; + interface ReactModernElement

extends ReactElement

{ + type: ModernComponentClass; + ref: string | ((component: Component) => any); } - interface ReactClassicElement

- extends ReactElementBase, P> { + interface ReactClassicElement

extends ReactElement

{ type: string | ClassicComponentClass; + ref: string | ((component: ClassicComponent) => any); } - interface ReactDOMElement

// subtype of ReactClassicElement - extends ReactElementBase, P> { + // subtype of ReactClassicElement + interface ReactDOMElement

extends ReactElement

{ type: string; + ref: string | ((component: DOMComponent

) => any); } type ReactHTMLElement = ReactDOMElement; @@ -41,11 +44,15 @@ declare module "react/addons" { (props?: P, ...children: ReactNode[]): ReactElement

; } - interface ClassicFactory

{ + interface ModernFactory

extends Factory

{ + (props?: P, ...children: ReactNode[]): ReactModernElement

; + } + + interface ClassicFactory

extends Factory

{ (props?: P, ...children: ReactNode[]): ReactClassicElement

; } - interface DOMFactory

{ + interface DOMFactory

extends Factory

{ (props?: P, ...children: ReactNode[]): ReactDOMElement

; } @@ -58,25 +65,22 @@ declare module "react/addons" { // ---------------------------------------------------------------------- type ReactText = string | number; - type ReactChild = ReactElementBase | ReactText; + type ReactChild = ReactElement | ReactText; // Should be Array but type aliases cannot be recursive - type ReactFragment = Array; + type ReactFragment = {} | Array; type ReactNode = ReactChild | ReactFragment | boolean; // // Top Level API // ---------------------------------------------------------------------- - function createClass( - spec: ComponentSpec): ClassicComponentClass; + function createClass(spec: ComponentSpec): ClassicComponentClass; - function createFactory

( - type: string): DOMFactory

; - function createFactory

( - type: ClassicComponentClass | string): ClassicFactory

; - function createFactory

( - type: ComponentClass): Factory

; + function createFactory

(type: string): DOMFactory

; + function createFactory

(type: ClassicComponentClass | string): ClassicFactory

; + function createFactory

(type: ModernComponentClass): ModernFactory

; + function createFactory

(type: ComponentClass

): Factory

; function createElement

( type: string, @@ -87,9 +91,9 @@ declare module "react/addons" { props?: P, ...children: ReactNode[]): ReactClassicElement

; function createElement

( - type: ComponentClass, + type: ModernComponentClass, props?: P, - ...children: ReactNode[]): ReactElement

; + ...children: ReactNode[]): ReactModernElement

; function cloneElement

( element: ReactDOMElement

, @@ -99,6 +103,10 @@ declare module "react/addons" { element: ReactClassicElement

, props?: P, ...children: ReactNode[]): ReactClassicElement

; + function cloneElement

( + element: ReactModernElement

, + props?: P, + ...children: ReactNode[]): ReactModernElement

; function cloneElement

( element: ReactElement

, props?: P, @@ -118,8 +126,8 @@ declare module "react/addons" { callback?: () => any): Component; function unmountComponentAtNode(container: Element): boolean; - function renderToString(element: ReactElementBase): string; - function renderToStaticMarkup(element: ReactElementBase): string; + function renderToString(element: ReactElement): string; + function renderToStaticMarkup(element: ReactElement): string; function isValidElement(object: {}): boolean; function initializeTouchEvents(shouldUseTouch: boolean): void; @@ -164,7 +172,7 @@ declare module "react/addons" { tagName: string; } - export type HTMLComponent = DOMComponent; + type HTMLComponent = DOMComponent; type SVGComponent = DOMComponent; interface ChildContextProvider { @@ -175,18 +183,18 @@ declare module "react/addons" { // Class Interfaces // ---------------------------------------------------------------------- - interface ComponentClassBase

{ + interface ComponentClass

{ propTypes?: ValidationMap

; contextTypes?: ValidationMap; childContextTypes?: ValidationMap; } - interface ComponentClass extends ComponentClassBase

{ + interface ModernComponentClass extends ComponentClass

{ new(props?: P, context?: any): Component; defaultProps?: P; } - interface ClassicComponentClass extends ComponentClassBase

{ + interface ClassicComponentClass extends ComponentClass

{ new(props?: P, context?: any): ClassicComponent; getDefaultProps?(): P; displayName?: string; @@ -222,7 +230,7 @@ declare module "react/addons" { } interface ComponentSpec extends Mixin { - render(): ReactElementBase; + render(): ReactElement; } // @@ -760,6 +768,7 @@ declare module "react/addons" { cloneWithProps

(element: ReactDOMElement

, props: P): ReactDOMElement

; cloneWithProps

(element: ReactClassicElement

, props: P): ReactClassicElement

; + cloneWithProps

(element: ReactModernElement

, props: P): ReactModernElement

; cloneWithProps

(element: ReactElement

, props: P): ReactElement

; createFragment(object: { [key: string]: ReactNode }): ReactFragment; @@ -776,8 +785,6 @@ declare module "react/addons" { // React.addons (Transitions) // ---------------------------------------------------------------------- - type ReactType = ComponentClass | string; - interface TransitionGroupProps { component?: ReactType; childFactory?: (child: ReactElement) => ReactElement; @@ -790,10 +797,8 @@ declare module "react/addons" { transitionLeave?: boolean; } - type CSSTransitionGroup = - ComponentClass; - type TransitionGroup = - ComponentClass; + type CSSTransitionGroup = ComponentClass; + type TransitionGroup = ComponentClass; // // React.addons (Mixins) @@ -885,7 +890,7 @@ declare module "react/addons" { isCompositeComponent(instance: Component): boolean; isCompositeComponentWithType( instance: Component, - type: ComponentClass): boolean; + type: ComponentClass): boolean; findAllInRenderedTree( tree: Component, @@ -905,19 +910,19 @@ declare module "react/addons" { tree: Component, tagName: string): DOMComponent; - scryRenderedComponentsWithType( + scryRenderedComponentsWithType

( tree: Component, - type: ComponentClass): Component[]; + type: ComponentClass

): Component[]; scryRenderedComponentsWithType>( tree: Component, - type: ComponentClass): C[]; + type: ComponentClass): C[]; - findRenderedComponentWithType( + findRenderedComponentWithType

( tree: Component, - type: ComponentClass): Component; + type: ComponentClass

): Component; findRenderedComponentWithType>( tree: Component, - type: ComponentClass): C; + type: ComponentClass): C; } interface SyntheticEventData { diff --git a/react/future/react-addons-global-0.13.0.d.ts b/react/future/react-addons-global-0.13.0.d.ts index c5db4f6d24..94f2844c02 100644 --- a/react/future/react-addons-global-0.13.0.d.ts +++ b/react/future/react-addons-global-0.13.0.d.ts @@ -25,6 +25,7 @@ declare module React { cloneWithProps

(element: ReactDOMElement

, props: P): ReactDOMElement

; cloneWithProps

(element: ReactClassicElement

, props: P): ReactClassicElement

; + cloneWithProps

(element: ReactModernElement

, props: P): ReactModernElement

; cloneWithProps

(element: ReactElement

, props: P): ReactElement

; createFragment(object: { [key: string]: ReactNode }): ReactFragment; @@ -41,8 +42,6 @@ declare module React { // React.addons (Transitions) // ---------------------------------------------------------------------- - type ReactType = ComponentClass | string; - interface TransitionGroupProps { component?: ReactType; childFactory?: (child: ReactElement) => ReactElement; @@ -55,10 +54,8 @@ declare module React { transitionLeave?: boolean; } - type CSSTransitionGroup = - ComponentClass; - type TransitionGroup = - ComponentClass; + type CSSTransitionGroup = ComponentClass; + type TransitionGroup = ComponentClass; // // React.addons (Mixins) @@ -150,7 +147,7 @@ declare module React { isCompositeComponent(instance: Component): boolean; isCompositeComponentWithType( instance: Component, - type: ComponentClass): boolean; + type: ComponentClass): boolean; findAllInRenderedTree( tree: Component, @@ -170,19 +167,19 @@ declare module React { tree: Component, tagName: string): DOMComponent; - scryRenderedComponentsWithType( + scryRenderedComponentsWithType

( tree: Component, - type: ComponentClass): Component[]; + type: ComponentClass

): Component[]; scryRenderedComponentsWithType>( tree: Component, - type: ComponentClass): C[]; + type: ComponentClass): C[]; - findRenderedComponentWithType( + findRenderedComponentWithType

( tree: Component, - type: ComponentClass): Component; + type: ComponentClass

): Component; findRenderedComponentWithType>( tree: Component, - type: ComponentClass): C; + type: ComponentClass): C; } interface SyntheticEventData { diff --git a/react/future/react-global-0.13.0.d.ts b/react/future/react-global-0.13.0.d.ts index b7be8993fc..9cd5b69fe1 100644 --- a/react/future/react-global-0.13.0.d.ts +++ b/react/future/react-global-0.13.0.d.ts @@ -8,26 +8,29 @@ declare module React { // React Elements // ---------------------------------------------------------------------- - interface ReactElementBase { - type: string | ComponentClassBase

; + type ReactType = ComponentClass | string; + + interface ReactElement

{ + type: string | ComponentClass

; props: P; key: string | number; - ref: string | ((component: T) => any); + ref: string | ((component: Component) => any); } - interface ReactElement

- extends ReactElementBase, P> { - type: ComponentClass; + interface ReactModernElement

extends ReactElement

{ + type: ModernComponentClass; + ref: string | ((component: Component) => any); } - interface ReactClassicElement

- extends ReactElementBase, P> { + interface ReactClassicElement

extends ReactElement

{ type: string | ClassicComponentClass; + ref: string | ((component: ClassicComponent) => any); } - interface ReactDOMElement

// subtype of ReactClassicElement - extends ReactElementBase, P> { + // subtype of ReactClassicElement + interface ReactDOMElement

extends ReactElement

{ type: string; + ref: string | ((component: DOMComponent

) => any); } type ReactHTMLElement = ReactDOMElement; @@ -41,11 +44,15 @@ declare module React { (props?: P, ...children: ReactNode[]): ReactElement

; } - interface ClassicFactory

{ + interface ModernFactory

extends Factory

{ + (props?: P, ...children: ReactNode[]): ReactModernElement

; + } + + interface ClassicFactory

extends Factory

{ (props?: P, ...children: ReactNode[]): ReactClassicElement

; } - interface DOMFactory

{ + interface DOMFactory

extends Factory

{ (props?: P, ...children: ReactNode[]): ReactDOMElement

; } @@ -58,7 +65,7 @@ declare module React { // ---------------------------------------------------------------------- type ReactText = string | number; - type ReactChild = ReactElementBase | ReactText; + type ReactChild = ReactElement | ReactText; // Should be Array but type aliases cannot be recursive type ReactFragment = {} | Array; @@ -68,15 +75,12 @@ declare module React { // Top Level API // ---------------------------------------------------------------------- - function createClass( - spec: ComponentSpec): ClassicComponentClass; + function createClass(spec: ComponentSpec): ClassicComponentClass; - function createFactory

( - type: string): DOMFactory

; - function createFactory

( - type: ClassicComponentClass | string): ClassicFactory

; - function createFactory

( - type: ComponentClass): Factory

; + function createFactory

(type: string): DOMFactory

; + function createFactory

(type: ClassicComponentClass | string): ClassicFactory

; + function createFactory

(type: ModernComponentClass): ModernFactory

; + function createFactory

(type: ComponentClass

): Factory

; function createElement

( type: string, @@ -87,21 +91,25 @@ declare module React { props?: P, ...children: ReactNode[]): ReactClassicElement

; function createElement

( - type: ComponentClass, + type: ModernComponentClass, props?: P, - ...children: ReactNode[]): ReactElement

; + ...children: ReactNode[]): ReactModernElement

; function cloneElement

( element: ReactDOMElement

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

; function cloneElement

( element: ReactClassicElement

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

; + function cloneElement

( + element: ReactModernElement

, + props?: P, + ...children: ReactNode[]): ReactModernElement

; function cloneElement

( element: ReactElement

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

; function render

( @@ -118,8 +126,8 @@ declare module React { callback?: () => any): Component; function unmountComponentAtNode(container: Element): boolean; - function renderToString(element: ReactElementBase): string; - function renderToStaticMarkup(element: ReactElementBase): string; + function renderToString(element: ReactElement): string; + function renderToStaticMarkup(element: ReactElement): string; function isValidElement(object: {}): boolean; function initializeTouchEvents(shouldUseTouch: boolean): void; @@ -175,18 +183,18 @@ declare module React { // Class Interfaces // ---------------------------------------------------------------------- - interface ComponentClassBase

{ + interface ComponentClass

{ propTypes?: ValidationMap

; contextTypes?: ValidationMap; childContextTypes?: ValidationMap; } - interface ComponentClass extends ComponentClassBase

{ + interface ModernComponentClass extends ComponentClass

{ new(props?: P, context?: any): Component; defaultProps?: P; } - interface ClassicComponentClass extends ComponentClassBase

{ + interface ClassicComponentClass extends ComponentClass

{ new(props?: P, context?: any): ClassicComponent; getDefaultProps?(): P; displayName?: string; @@ -222,7 +230,7 @@ declare module React { } interface ComponentSpec extends Mixin { - render(): ReactElementBase; + render(): ReactElement; } //