diff --git a/packages/@react-stately/select/src/useSelectState.ts b/packages/@react-stately/select/src/useSelectState.ts index 176cbf02bba..2bcf82787a9 100644 --- a/packages/@react-stately/select/src/useSelectState.ts +++ b/packages/@react-stately/select/src/useSelectState.ts @@ -46,7 +46,7 @@ export interface SelectState extends List readonly defaultValue: ValueType, /** Sets the select value. */ - setValue(value: Key | Key[] | null): void, + setValue(value: Key | readonly Key[] | null): void, /** * The value of the first selected item. @@ -88,7 +88,7 @@ export function useSelectState; }, [props.value, props.selectedKey, selectionMode]); - let [controlledValue, setControlledValue] = useControlledState(value, defaultValue, props.onChange as any); + let [controlledValue, setControlledValue] = useControlledState(value, defaultValue, props.onChange as any); // Only display the first selected item if in single selection mode but the value is an array. let displayValue = selectionMode === 'single' && Array.isArray(controlledValue) ? controlledValue[0] : controlledValue; let setValue = (value: Key | Key[] | null) => { diff --git a/packages/@react-types/select/src/index.d.ts b/packages/@react-types/select/src/index.d.ts index 374e5aa7cdb..8556b507611 100644 --- a/packages/@react-types/select/src/index.d.ts +++ b/packages/@react-types/select/src/index.d.ts @@ -32,10 +32,11 @@ import { } from '@react-types/shared'; export type SelectionMode = 'single' | 'multiple'; -export type ValueType = M extends 'single' ? Key | null : Key[]; +export type ValueType = M extends 'single' ? Key | null : readonly Key[]; +export type ChangeValueType = M extends 'single' ? Key | null : Key[]; type ValidationType = M extends 'single' ? Key : Key[]; -export interface SelectProps extends CollectionBase, Omit, ValueBase>, Validation>, HelpTextProps, LabelableProps, TextInputBase, FocusableProps { +export interface SelectProps extends CollectionBase, Omit, ValueBase, ChangeValueType>, Validation>, HelpTextProps, LabelableProps, TextInputBase, FocusableProps { /** * Whether single or multiple selection is enabled. * @default 'single'