Skip to content
This repository has been archived by the owner on Feb 8, 2020. It is now read-only.

Commit

Permalink
fix: properly infer route type in screen elements
Browse files Browse the repository at this point in the history
  • Loading branch information
satya164 committed Aug 7, 2019
1 parent e1d7333 commit 7e3a2c8
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 12 deletions.
16 changes: 7 additions & 9 deletions packages/core/src/createNavigator.tsx
Original file line number Diff line number Diff line change
@@ -1,28 +1,26 @@
import * as React from 'react';
import Screen from './Screen';
import { ParamListBase, RouteConfig, TypedNavigator } from './types';
import { ParamListBase, TypedNavigator } from './types';

/**
* Higher order component to create a `Navigator` and `Screen` pair.
* Custom navigators should wrap the navigator component in `createNavigator` before exporting.
*
* @param NavigatorComponent The navigtor component to wrap.
* @param Navigator The navigtor component to wrap.
* @returns Factory method to create a `Navigator` and `Screen` pair.
*/
export default function createNavigator<
ScreenOptions extends object,
N extends React.ComponentType<any>
>(NavigatorComponent: N) {
NavigatorComponent extends React.ComponentType<any>
>(Navigator: NavigatorComponent) {
return <ParamList extends ParamListBase>(): TypedNavigator<
ParamList,
ScreenOptions,
typeof NavigatorComponent
typeof Navigator
> => {
return {
Navigator: NavigatorComponent,
Screen: Screen as React.ComponentType<
RouteConfig<ParamList, keyof ParamList, ScreenOptions>
>,
Navigator,
Screen,
};
};
}
6 changes: 3 additions & 3 deletions packages/core/src/types.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -436,7 +436,7 @@ export type TypedNavigator<
initialRouteName?: keyof ParamList;
}
>;
Screen: React.ComponentType<
RouteConfig<ParamList, keyof ParamList, ScreenOptions>
>;
Screen: <RouteName extends keyof ParamList>(
_: RouteConfig<ParamList, RouteName, ScreenOptions>
) => null;
};

0 comments on commit 7e3a2c8

Please sign in to comment.