react-router-relay の Typescript 定義を作成したいのですが、react-router-relay の拡張性により苦労しています。react-router は、render プロパティを含むいくつかのプロパティを持つ Router コンポーネントを公開しています。react-router-relay は、この render プロパティを使用して Router にミドルウェアを提供します。この Router の後、Relay を指定できる環境プロパティも受け入れます。
モジュール react-router-relay でモジュール react-router の定義を拡張することを typescript に伝えるにはどうすればよいですか?
以下を試しましたが、react-router のすべてのコンポーネントをコピーする必要があります。
declare module "react-router-relay" {
import {Middleware} from "react-router/lib/applyRouterMiddleware";
import Router from "react-router/lib/Router";
import self from "react-router/lib/Route";
const RelayMiddleware:Middleware;
export default RelayMiddleware;
export interface RelayRouter extends React.ComponentClass<RelayRouterProps> { }
interface RelayRouterProps extends Router.RouterProps {
render?(...middlewares: any[]): any
environment?: any
}
namespace Route {
import RouteProps = self.RouteProps;
export interface RelayRouterProps extends RouteProps {
name?: string;
queries?: any;
render(props: any): React.Component<any, any>
}
}
}
反応ルーターの RouterProps と RouteProps のみを直接拡張することも可能ですか?
編集: router-relay は次のように適用されます:
import useRelay from 'react-router-relay';
...
<Router
history={browserHistory}
routes={routes}
render={applyRouterMiddleware(useRelay)}
environment={Relay.Store}
/>