From 3b27d9e819139a33ef9f11a91a2838bec479dd5a Mon Sep 17 00:00:00 2001 From: yyh Date: Sun, 18 Jan 2026 13:11:06 +0800 Subject: [PATCH] refactor(skill-editor): remove type assertions by using spread args pattern Replace explicit parameter destructuring with spread args pattern to eliminate `as unknown as` type assertions when composing sub-slices. This aligns with the pattern used in the main workflow store. --- .../store/workflow/skill-editor/index.ts | 49 ++++++++----------- 1 file changed, 20 insertions(+), 29 deletions(-) diff --git a/web/app/components/workflow/store/workflow/skill-editor/index.ts b/web/app/components/workflow/store/workflow/skill-editor/index.ts index d62de8a62d..10e77aacd1 100644 --- a/web/app/components/workflow/store/workflow/skill-editor/index.ts +++ b/web/app/components/workflow/store/workflow/skill-editor/index.ts @@ -20,33 +20,24 @@ export type SkillEditorSliceShape resetSkillEditor: () => void } -export const createSkillEditorSlice: StateCreator = (set, get, store) => { - // Type assertion via unknown to allow composition with other slices in a larger store - // This is safe because all slice creators only use set/get for their own properties - const tabArgs = [set, get, store] as unknown as Parameters> - const fileTreeArgs = [set, get, store] as unknown as Parameters> - const dirtyArgs = [set, get, store] as unknown as Parameters> - const metadataArgs = [set, get, store] as unknown as Parameters> - const menuArgs = [set, get, store] as unknown as Parameters> +export const createSkillEditorSlice: StateCreator = (...args) => ({ + ...createTabSlice(...args), + ...createFileTreeSlice(...args), + ...createDirtySlice(...args), + ...createMetadataSlice(...args), + ...createFileOperationsMenuSlice(...args), - return { - ...createTabSlice(...tabArgs), - ...createFileTreeSlice(...fileTreeArgs), - ...createDirtySlice(...dirtyArgs), - ...createMetadataSlice(...metadataArgs), - ...createFileOperationsMenuSlice(...menuArgs), - - resetSkillEditor: () => { - set({ - openTabIds: [], - activeTabId: null, - previewTabId: null, - expandedFolderIds: new Set(), - dirtyContents: new Map(), - fileMetadata: new Map>(), - dirtyMetadataIds: new Set(), - contextMenu: null, - }) - }, - } -} + resetSkillEditor: () => { + const [set] = args + set({ + openTabIds: [], + activeTabId: null, + previewTabId: null, + expandedFolderIds: new Set(), + dirtyContents: new Map(), + fileMetadata: new Map>(), + dirtyMetadataIds: new Set(), + contextMenu: null, + }) + }, +})