Skip to content

Commit 62c0e69

Browse files
Kanchalai Tanglertsampanmhegazy
authored andcommitted
Add tests and update lib tests file
1 parent 331285b commit 62c0e69

File tree

5 files changed

+64
-1
lines changed

5 files changed

+64
-1
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// @filename: file.tsx
2+
// @jsx: preserve
3+
// @noLib: true
4+
// @libFiles: react.d.ts,lib.d.ts
5+
6+
import React = require('react');
7+
8+
const decorator = function <T>(Component: React.StatelessComponent<T>): React.StatelessComponent<T> {
9+
return (props) => <Component {...props}></Component>
10+
};
11+
12+
const decorator2 = function <T extends { x: number }>(Component: React.StatelessComponent<T>): React.StatelessComponent<T> {
13+
return (props) => <Component {...props} x={2} ></Component>
14+
};
15+
16+
const decorator3 = function <T extends { x: number }, U extends { x: number } >(Component: React.StatelessComponent<T>): React.StatelessComponent<T> {
17+
return (props) => <Component x={2} {...props} ></Component>
18+
};
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// @filename: file.tsx
2+
// @jsx: preserve
3+
// @noLib: true
4+
// @libFiles: react.d.ts,lib.d.ts
5+
6+
import React = require('react');
7+
8+
const decorator4 = function <T extends { x: number }>(Component: React.StatelessComponent<T>): React.StatelessComponent<T> {
9+
return (props) => <Component {...props} y={"blah"} ></Component>
10+
};
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// @filename: file.tsx
2+
// @jsx: preserve
3+
// @noLib: true
4+
// @libFiles: react.d.ts,lib.d.ts
5+
6+
import React = require('react');
7+
8+
class B1<T extends { x: string } = { x:string } > extends React.Component<T, {}> {
9+
render() {
10+
return <div>hi</div>;
11+
}
12+
}
13+
class B<U> extends React.Component<U, {}> {
14+
render() {
15+
return <B1 {...this.props} x="hi" />;
16+
}
17+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// @filename: file.tsx
2+
// @jsx: preserve
3+
// @noLib: true
4+
// @libFiles: react.d.ts,lib.d.ts
5+
6+
import React = require('react');
7+
8+
class B1<T extends { x: string }> extends React.Component<T, {}> {
9+
render() {
10+
return <div>hi</div>;
11+
}
12+
}
13+
class B<U> extends React.Component<U, {}> {
14+
render() {
15+
// Should be an ok but as of 2.3.3 this will be an error as we will instantiate B1.props to be empty object
16+
return <B1 {...this.props} x="hi" />;
17+
}
18+
}

tests/lib/react.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ declare namespace __React {
197197

198198
type SFC<P> = StatelessComponent<P>;
199199
interface StatelessComponent<P> {
200-
(props: P, context?: any): ReactElement<any>;
200+
(props: P & { children?: ReactNode }, context?: any): ReactElement<any>;
201201
propTypes?: ValidationMap<P>;
202202
contextTypes?: ValidationMap<any>;
203203
defaultProps?: P;

0 commit comments

Comments
 (0)