From a0eb795fa91ac733a3ef832e19ac43778168401d Mon Sep 17 00:00:00 2001 From: Masafumi Koba Date: Tue, 7 Aug 2018 04:07:43 +0900 Subject: [PATCH] [react-transition-group] Restrict Transition child function's argument type (#27894) > A `function` child can be used instead of a React element. > This function is called with the current transition status > ('entering', 'entered', 'exiting', 'exited', 'unmounted'), which can be used > to apply context specific props to a component. https://github.com/reactjs/react-transition-group/blob/b8da4f2f2314b23a6471d78cb14c22efe13481dd/src/Transition.js#L379 See also #27693 --- types/react-transition-group/Transition.d.ts | 8 +++++++- types/react-transition-group/index.d.ts | 1 + .../react-transition-group-tests.tsx | 11 ++++++++++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/types/react-transition-group/Transition.d.ts b/types/react-transition-group/Transition.d.ts index 123f8b1622..f8722a41d8 100644 --- a/types/react-transition-group/Transition.d.ts +++ b/types/react-transition-group/Transition.d.ts @@ -16,7 +16,13 @@ export interface TransitionActions { exit?: boolean; } -export type TransitionChildren = React.ReactNode | ((status: string) => React.ReactNode); +type TransitionStatus = + typeof ENTERING | + typeof ENTERED | + typeof EXITING | + typeof EXITED | + typeof UNMOUNTED; +export type TransitionChildren = React.ReactNode | ((status: TransitionStatus) => React.ReactNode); export interface TransitionProps extends TransitionActions { in?: boolean; mountOnEnter?: boolean; diff --git a/types/react-transition-group/index.d.ts b/types/react-transition-group/index.d.ts index 785e1f1941..2d97f64ce6 100644 --- a/types/react-transition-group/index.d.ts +++ b/types/react-transition-group/index.d.ts @@ -2,6 +2,7 @@ // Project: https://github.com/reactjs/react-transition-group // Definitions by: Karol Janyst // Epskampie +// Masafumi Koba // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.8 diff --git a/types/react-transition-group/react-transition-group-tests.tsx b/types/react-transition-group/react-transition-group-tests.tsx index ce096f3dc7..172d91ce54 100644 --- a/types/react-transition-group/react-transition-group-tests.tsx +++ b/types/react-transition-group/react-transition-group-tests.tsx @@ -52,7 +52,16 @@ const Test: React.StatelessComponent = () => {
{ "test" }
- {(status) =>
{status}
} + {(status) => { + switch (status) { + case ENTERING: + case ENTERED: + case EXITING: + case EXITED: + case UNMOUNTED: + return
{status}
; + } + }}