diff --git a/.changeset/typed-custom-preferences-update.md b/.changeset/typed-custom-preferences-update.md new file mode 100644 index 000000000..00fe91b22 --- /dev/null +++ b/.changeset/typed-custom-preferences-update.md @@ -0,0 +1,5 @@ +--- +'@vben-core/preferences': patch +--- + +fix(@vben-core/preferences): type custom preference updates diff --git a/packages/@core/preferences/__tests__/preferences-types.test.ts b/packages/@core/preferences/__tests__/preferences-types.test.ts new file mode 100644 index 000000000..2da8114a9 --- /dev/null +++ b/packages/@core/preferences/__tests__/preferences-types.test.ts @@ -0,0 +1,21 @@ +import { describe, expectTypeOf, it } from 'vitest'; + +import type { DeepPartial } from '@vben-core/typings'; + +import { updateCustomPreferences } from '../src'; + +interface ProjectPreferences { + defaultTableSize: number; + tenantMode: 'multi' | 'single'; +} + +describe('custom preferences types', () => { + it('accepts a typed partial update', () => { + const updateProjectPreferences = + updateCustomPreferences; + + expectTypeOf(updateProjectPreferences) + .parameter(0) + .toEqualTypeOf>(); + }); +}); diff --git a/packages/@core/preferences/src/preferences.ts b/packages/@core/preferences/src/preferences.ts index 0f34d0c61..5b3cfffac 100644 --- a/packages/@core/preferences/src/preferences.ts +++ b/packages/@core/preferences/src/preferences.ts @@ -188,7 +188,11 @@ class PreferenceManager { * 更新扩展偏好设置 * @param updates - 要更新的扩展偏好设置 */ - updateCustomPreferences = (updates: DeepPartial) => { + updateCustomPreferences = < + TCustomPreferences extends object = CustomPreferencesRecord, + >( + updates: DeepPartial, + ) => { if (!this.customPreferencesExtension) { return; }