From fb94b1ef373912e0e546d4c6e4029d4d75a77551 Mon Sep 17 00:00:00 2001 From: use-strict Date: Thu, 17 Sep 2015 19:37:31 +0300 Subject: [PATCH 1/2] Update react.d.ts Make React.Component (static side) compatible with React.ComponentClass. This ensures validation when we use ES6-style classes to extend from React.Component, as opposed to using React.createClass. --- react/react.d.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/react/react.d.ts b/react/react.d.ts index 54d13d5eb..9dd616a1b 100644 --- a/react/react.d.ts +++ b/react/react.d.ts @@ -132,6 +132,11 @@ declare namespace __React { // Base component for plain JS classes class Component implements ComponentLifecycle { + static propTypes: ValidationMap; + static contextTypes: ValidationMap; + static childContextTypes: ValidationMap; + static defaultProps: Props; + constructor(props?: P, context?: any); setState(f: (prevState: S, props: P) => S, callback?: () => any): void; setState(state: S, callback?: () => any): void; @@ -929,6 +934,11 @@ declare module "react/addons" { // Base component for plain JS classes class Component implements ComponentLifecycle { + static propTypes: ValidationMap; + static contextTypes: ValidationMap; + static childContextTypes: ValidationMap; + static defaultProps: Props; + constructor(props?: P, context?: any); setState(f: (prevState: S, props: P) => S, callback?: () => any): void; setState(state: S, callback?: () => any): void; From 64cd3d9c56336ffaf2c64ff5de95438c52cda656 Mon Sep 17 00:00:00 2001 From: "Ciuca, Alexandru" Date: Thu, 17 Sep 2015 20:11:06 +0300 Subject: [PATCH 2/2] Fixed react tests caused by incompatibility of aliased props generics --- react-dnd/react-dnd-tests.ts | 4 ++++ react/react-addons-tests.ts | 2 ++ react/react-global-tests.ts | 2 ++ react/react-tests.ts | 2 ++ 4 files changed, 10 insertions(+) diff --git a/react-dnd/react-dnd-tests.ts b/react-dnd/react-dnd-tests.ts index d270a041d..45c492073 100644 --- a/react-dnd/react-dnd-tests.ts +++ b/react-dnd/react-dnd-tests.ts @@ -80,6 +80,8 @@ module Knight { } export class Knight extends React.Component { + static defaultProps: KnightP; + static create = React.createFactory(Knight); componentDidMount() { @@ -153,6 +155,8 @@ module BoardSquare { } export class BoardSquare extends React.Component { + static defaultProps: BoardSquareP; + private _renderOverlay = (color: string) => { return r.div({ style: { diff --git a/react/react-addons-tests.ts b/react/react-addons-tests.ts index 245cb78d8..4d8ed3212 100644 --- a/react/react-addons-tests.ts +++ b/react/react-addons-tests.ts @@ -84,6 +84,8 @@ class ModernComponent extends React.Component static childContextTypes: React.ValidationMap = { someOtherValue: React.PropTypes.string } + + static defaultProps: Props; context: Context; diff --git a/react/react-global-tests.ts b/react/react-global-tests.ts index a3f4a1484..0b20e4650 100644 --- a/react/react-global-tests.ts +++ b/react/react-global-tests.ts @@ -81,6 +81,8 @@ class ModernComponent extends React.Component someOtherValue: React.PropTypes.string } + static defaultProps: Props; + context: Context; getChildContext() { diff --git a/react/react-tests.ts b/react/react-tests.ts index 6540cc9f3..053a17eb9 100644 --- a/react/react-tests.ts +++ b/react/react-tests.ts @@ -82,6 +82,8 @@ class ModernComponent extends React.Component someOtherValue: React.PropTypes.string } + static defaultProps: Props; + context: Context; getChildContext() {