diff --git a/types/storybook__addon-knobs/index.d.ts b/types/storybook__addon-knobs/index.d.ts index c202d2d845..c2f8c954ec 100644 --- a/types/storybook__addon-knobs/index.d.ts +++ b/types/storybook__addon-knobs/index.d.ts @@ -37,8 +37,10 @@ export function color(name: string, value: string): string; export function object(name: string, value: T): T; -export function select(name: string, options: { [s: string]: T }, value: string): T; -export function select(name: string, options: string[], value: string): string; +export type SelectValue = string | number; +export function select(name: string, options: { [s: string]: string }, value: T): T; +export function select(name: string, options: { [s: number]: string }, value: T): T; +export function select(name: string, options: T[], value: T): T; export function date(name: string, value?: Date): Date; diff --git a/types/storybook__addon-knobs/storybook__addon-knobs-tests.tsx b/types/storybook__addon-knobs/storybook__addon-knobs-tests.tsx index dba68729fe..9e1c1dbd6b 100644 --- a/types/storybook__addon-knobs/storybook__addon-knobs-tests.tsx +++ b/types/storybook__addon-knobs/storybook__addon-knobs-tests.tsx @@ -14,6 +14,11 @@ import { knob, } from '@storybook/addon-knobs'; +enum SomeEnum { + Type1 = 1, + Type2 +} + const stories = storiesOf('Example of Knobs', module); stories.addDecorator(withKnobs); @@ -39,9 +44,18 @@ stories.add('with all knobs', () => { }); const genericObject: string = object('Some generic object', 'value'); + type X = 'a' | 'b'; - const genericSelect: X = select('Some generic select', { a: 'a', b: 'b'}, 'b'); + + const genericSelect: X = select('Some generic select', { a: 'type a', b: 'type b'}, 'b'); + + const enumSelectOptions: { [s: number]: string } = {}; + enumSelectOptions[SomeEnum.Type1] = "Type 1"; + enumSelectOptions[SomeEnum.Type2] = "Type 2"; + const genericSelect2: SomeEnum = select('Some generic select', enumSelectOptions, SomeEnum.Type1); + const genericArray: string[] = array('Some generic array', ['red', 'green', 'blue']); + const genericKnob: X = knob('Some generic knob', { value: 'a', type: 'text' }); const style = {