From 3b0008e23be01885c0a878fe4528d8cbfbd371b5 Mon Sep 17 00:00:00 2001 From: Jimmy Jia Date: Fri, 12 Apr 2019 11:40:59 -0400 Subject: [PATCH] fix: Define type for useRouter --- types/example-app/ComponentUsingRouter.tsx | 18 ++++++++++++++++ types/example-app/ComponentWithRouter.tsx | 24 +++++++++------------- types/example-app/MainPage.tsx | 2 ++ types/index.d.ts | 8 +++++--- types/useRouter.d.ts | 5 +++++ 5 files changed, 40 insertions(+), 17 deletions(-) create mode 100644 types/example-app/ComponentUsingRouter.tsx create mode 100644 types/useRouter.d.ts diff --git a/types/example-app/ComponentUsingRouter.tsx b/types/example-app/ComponentUsingRouter.tsx new file mode 100644 index 00000000..ef55f83f --- /dev/null +++ b/types/example-app/ComponentUsingRouter.tsx @@ -0,0 +1,18 @@ +import useRouter from 'found/lib/useRouter'; +import * as React from 'react'; + +interface Props { + foo?: boolean; +} + +function ComponentUsingRouter(_props: Props) { + const { match, router } = useRouter(); + + return ( +
+ {match.location.pathname}, {router} +
+ ); +} + +export { ComponentUsingRouter }; diff --git a/types/example-app/ComponentWithRouter.tsx b/types/example-app/ComponentWithRouter.tsx index 03143e50..9fb9c688 100644 --- a/types/example-app/ComponentWithRouter.tsx +++ b/types/example-app/ComponentWithRouter.tsx @@ -1,23 +1,19 @@ -import { WithRouterProps } from 'found'; +import { Match, Router } from 'found'; import withRouter from 'found/lib/withRouter'; import * as React from 'react'; -interface Props extends WithRouterProps { +interface Props { foo?: boolean; + match: Match; + router: Router; } -class ComponentWithRouter extends React.Component { - render() { - const { - match: { location }, - router, - } = this.props; - return ( -
- {location.pathname}, {router} -
- ); - } +function ComponentWithRouter({ match, router }: Props) { + return ( +
+ {match.location.pathname}, {router} +
+ ); } const ComponentWithRouterContainer = withRouter(ComponentWithRouter); diff --git a/types/example-app/MainPage.tsx b/types/example-app/MainPage.tsx index 25f70c3d..191e1ff5 100644 --- a/types/example-app/MainPage.tsx +++ b/types/example-app/MainPage.tsx @@ -1,11 +1,13 @@ import * as React from 'react'; +import { ComponentUsingRouter } from './ComponentUsingRouter'; import { ComponentWithRouter } from './ComponentWithRouter'; export function MainPage() { return (
+
); } diff --git a/types/index.d.ts b/types/index.d.ts index db354487..b5779640 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -356,14 +356,16 @@ declare module 'found' { onClick: (event: React.SyntheticEvent) => void; } - interface WithRouterProps { + interface RouterState { match: Match; router: Router; } - function withRouter( + function useRouter(): RouterState; + + function withRouter( Component: React.ComponentType, - ): React.ComponentType>; + ): React.ComponentType>; class RedirectException { constructor(location: LocationDescriptor); diff --git a/types/useRouter.d.ts b/types/useRouter.d.ts new file mode 100644 index 00000000..5d97b63b --- /dev/null +++ b/types/useRouter.d.ts @@ -0,0 +1,5 @@ +declare module 'found/lib/useRouter' { + import { useRouter } from 'found'; + + export default useRouter; +}