From 72c07c700556b42e6645f88a3d7591a7fc87c247 Mon Sep 17 00:00:00 2001 From: Andrew Lisowski Date: Mon, 16 Sep 2019 15:05:24 -0700 Subject: [PATCH] storyboook addon knobs select: correct types for an array (#38316) * Update select types * add test * fix tests --- types/storybook__addon-knobs/index.d.ts | 7 ++++++- .../storybook__addon-knobs-tests.tsx | 8 ++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/types/storybook__addon-knobs/index.d.ts b/types/storybook__addon-knobs/index.d.ts index 9922443e05..4c5f432ae5 100644 --- a/types/storybook__addon-knobs/index.d.ts +++ b/types/storybook__addon-knobs/index.d.ts @@ -52,7 +52,12 @@ export function object(name: string, value: T, groupId?: string): T; export function radios(name: string, options: { [s: string]: T }, value?: T, groupId?: string): T; -export function select(name: string, options: { [s: string]: T }, value: T, groupId?: string): T; +export function select( + name: string, + options: { [s: string]: T } | ReadonlyArray, + value: T, + groupId?: string, +): T; export function select< T extends Exclude< React.OptionHTMLAttributes['value'], diff --git a/types/storybook__addon-knobs/storybook__addon-knobs-tests.tsx b/types/storybook__addon-knobs/storybook__addon-knobs-tests.tsx index a55f5bfb63..d2afbe593b 100644 --- a/types/storybook__addon-knobs/storybook__addon-knobs-tests.tsx +++ b/types/storybook__addon-knobs/storybook__addon-knobs-tests.tsx @@ -108,6 +108,14 @@ const stringLiteralArray: StringLiteralType[] = ['Apple', 'Banana', 'Grapes']; // type of value returned from `select` must be `StringLiteralType`. const _: StringLiteralType = select('With string literal array', stringLiteralArray, stringLiteralArray[0]); +type StringLiteralTypeUndefined = StringLiteralType | undefined; + +const _Undefined: StringLiteralTypeUndefined = select( + 'With string literal array', + stringLiteralArray, + undefined, +); + const optionsObject = { Apple: { taste: 'sweet', color: 'red' }, Lemon: { taste: 'sour', color: 'yellow' }