UNPKG

709 BTypeScriptView Raw
1// TypeScript Version: 3.0
2
3import * as React from 'react';
4
5export type Omit<T, U> = Pick<T, Exclude<keyof T, U>>;
6
7export type mapper<TInner, TOuter> = (input: TInner) => TOuter;
8
9export interface InferableComponentEnhancerWithProps<
10 TInjectedProps,
11 TNeedsProps
12> {
13 <P extends TInjectedProps>(
14 component: React.ComponentType<P>,
15 ): React.ComponentType<Omit<P, keyof TInjectedProps> & TNeedsProps>;
16}
17
18export function mapProps<TInner, TOuter>(
19 propsMapper: mapper<TOuter, TInner>,
20): InferableComponentEnhancerWithProps<TInner, TOuter>;
21
22export function withProps<TInner, TOuter>(
23 createProps: TInner | mapper<TOuter, TInner>,
24): InferableComponentEnhancerWithProps<TInner & TOuter, TOuter>;