From 86a3404ab46cc5121591ff1055a945dac95c679c Mon Sep 17 00:00:00 2001 From: Han Feng Date: Mon, 28 Nov 2022 19:09:01 +0800 Subject: [PATCH] [Autocomplete] Fix inferred value type when `multiple` prop is `true` (#35275) --- .../AutocompleteUnstyled/useAutocomplete.d.ts | 12 +++++------- .../src/Autocomplete/Autocomplete.spec.tsx | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/packages/mui-base/src/AutocompleteUnstyled/useAutocomplete.d.ts b/packages/mui-base/src/AutocompleteUnstyled/useAutocomplete.d.ts index 57cc393c3710a6..de04268a6b826c 100644 --- a/packages/mui-base/src/AutocompleteUnstyled/useAutocomplete.d.ts +++ b/packages/mui-base/src/AutocompleteUnstyled/useAutocomplete.d.ts @@ -27,13 +27,11 @@ export function createFilterOptions( export type AutocompleteFreeSoloValueMapping = FreeSolo extends true ? string : never; -export type AutocompleteValue = Multiple extends - | undefined - | false - ? DisableClearable extends true - ? NonNullable> - : T | null | AutocompleteFreeSoloValueMapping - : Array>; +export type AutocompleteValue = Multiple extends true + ? Array> + : DisableClearable extends true + ? NonNullable> + : T | null | AutocompleteFreeSoloValueMapping; export interface UseAutocompleteProps< T, diff --git a/packages/mui-material/src/Autocomplete/Autocomplete.spec.tsx b/packages/mui-material/src/Autocomplete/Autocomplete.spec.tsx index d2f6ab028c9040..fbd7edc2c79a20 100644 --- a/packages/mui-material/src/Autocomplete/Autocomplete.spec.tsx +++ b/packages/mui-material/src/Autocomplete/Autocomplete.spec.tsx @@ -66,6 +66,24 @@ function MyAutocomplete< renderInput={(params) => } />; +interface Option { + label: string; + value: string; +} +const options: Option[] = [ + { label: '1', value: '1' }, + { label: '2', value: '2' }, +]; +const defaultOptions = [options[0], options[1]]; + o.label === v.label} + getOptionLabel={(o) => o.label} + renderInput={() => null} +/>; + interface Tag { color: string; label: string;