DefinitelyTyped/types/react-router-redux/index.d.ts
2019-02-12 14:36:28 -08:00

84 lines
2.2 KiB
TypeScript

// Type definitions for react-router-redux 5.0
// Project: https://github.com/reactjs/react-router-redux
// Definitions by: Huy Nguyen <https://github.com/huy-nguyen>
// Shoya Tanaka <https://github.com/8398a7>
// Mykolas <https://github.com/mykolas>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 3.0
import {
Store,
Dispatch,
Middleware,
Reducer
} from 'redux';
import {
History,
Location,
Path,
LocationState,
LocationDescriptor
} from 'history';
import * as React from 'react';
import { match } from 'react-router';
export interface ConnectedRouterProps<State> {
store?: Store<State>;
history: History;
}
export class ConnectedRouter<State> extends React.Component<ConnectedRouterProps<State>> {}
export const LOCATION_CHANGE = '@@router/LOCATION_CHANGE';
export interface RouterState {
location: Location | null;
}
export const routerReducer: Reducer<RouterState>;
export const CALL_HISTORY_METHOD = '@@router/CALL_HISTORY_METHOD';
export function push(location: LocationDescriptor, state?: LocationState): RouterAction;
export function replace(location: LocationDescriptor, state?: LocationState): RouterAction;
export function go(n: number): RouterAction;
export function goBack(): RouterAction;
export function goForward(): RouterAction;
export const routerActions: {
push: typeof push
replace: typeof replace
go: typeof go
goBack: typeof goBack
goForward: typeof goForward
};
export interface LocationActionPayload {
method: string;
args?: any[];
}
export interface RouterAction {
type: typeof CALL_HISTORY_METHOD;
payload: LocationActionPayload;
}
export interface LocationChangeAction {
type: typeof LOCATION_CHANGE;
payload: Location & {
props?: {
match: {
path: string;
url: string;
params: any;
isExact: boolean;
},
location: Location;
history: History;
}
};
}
export function routerMiddleware(history: History): Middleware;
export function createMatchSelector(path: string): (state: { router: RouterState }) => match | null;