From c8c4e16719222e284eea9e662295aa9e071c97a7 Mon Sep 17 00:00:00 2001 From: Chris Santamaria Date: Sun, 5 Mar 2023 15:54:35 -0500 Subject: [PATCH] Fix complex value return type inference --- packages/prompts/src/index.ts | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/packages/prompts/src/index.ts b/packages/prompts/src/index.ts index 3b342dd5..bef53aff 100644 --- a/packages/prompts/src/index.ts +++ b/packages/prompts/src/index.ts @@ -174,15 +174,13 @@ type Option = Value extends Primitive ? { value: Value; label?: string; hint?: string } : { value: Value; label: string; hint?: string }; -export interface SelectOptions[], Value> { +export interface SelectOptions { message: string; - options: Options; + options: Option[]; initialValue?: Value; } -export const select = [], Value>( - opts: SelectOptions -) => { +export const select = (opts: SelectOptions) => { const opt = (option: Option, state: 'inactive' | 'active' | 'selected' | 'cancelled') => { const label = option.label ?? String(option.value); if (state === 'active') { @@ -221,9 +219,7 @@ export const select = [], Value>( }).prompt() as Promise; }; -export const selectKey = [], Value extends string>( - opts: SelectOptions -) => { +export const selectKey = (opts: SelectOptions) => { const opt = ( option: Option, state: 'inactive' | 'active' | 'selected' | 'cancelled' = 'inactive' @@ -269,16 +265,14 @@ export const selectKey = [], Value extends string> }).prompt() as Promise; }; -export interface MultiSelectOptions[], Value> { +export interface MultiSelectOptions { message: string; - options: Options; + options: Option[]; initialValues?: Value[]; required?: boolean; cursorAt?: Value; } -export const multiselect = [], Value>( - opts: MultiSelectOptions -) => { +export const multiselect = (opts: MultiSelectOptions) => { const opt = ( option: Option, state: 'inactive' | 'active' | 'selected' | 'active-selected' | 'submitted' | 'cancelled' @@ -387,16 +381,14 @@ export const multiselect = [], Value>( }).prompt() as Promise; }; -export interface GroupMultiSelectOptions[], Value> { +export interface GroupMultiSelectOptions { message: string; - options: Record; + options: Record[]>; initialValues?: Value[]; required?: boolean; cursorAt?: Value; } -export const groupMultiselect = [], Value>( - opts: GroupMultiSelectOptions -) => { +export const groupMultiselect = (opts: GroupMultiSelectOptions) => { const opt = ( option: Option, state: