2016-05-19 17:22:53 +02:00
|
|
|
// @filename: file.tsx
|
|
|
|
// @jsx: react
|
|
|
|
// @noLib: true
|
2017-10-04 22:14:05 +02:00
|
|
|
// @skipLibCheck: true
|
2016-05-19 17:22:53 +02:00
|
|
|
// @libFiles: react.d.ts,lib.d.ts
|
|
|
|
|
|
|
|
import React = require('react');
|
|
|
|
|
|
|
|
interface ComponentProps {
|
|
|
|
AnyComponent: React.StatelessComponent<any> | React.ComponentClass<any>;
|
|
|
|
}
|
|
|
|
|
|
|
|
class MyComponent extends React.Component<ComponentProps, {}> {
|
|
|
|
render() {
|
|
|
|
const { AnyComponent } = this.props;
|
2016-05-19 20:19:35 +02:00
|
|
|
return (<AnyComponent />);
|
2016-05-19 17:22:53 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-05-19 20:19:35 +02:00
|
|
|
// Stateless Component As Props
|
2016-05-19 17:22:53 +02:00
|
|
|
<MyComponent AnyComponent={() => <button>test</button>}/>
|
|
|
|
|
2016-05-19 20:19:35 +02:00
|
|
|
// Component Class as Props
|
2016-05-19 17:22:53 +02:00
|
|
|
class MyButtonComponent extends React.Component<{},{}> {
|
|
|
|
}
|
|
|
|
|
|
|
|
<MyComponent AnyComponent={MyButtonComponent} />
|
|
|
|
|