From e04d05aa1bbea5e6439d5b2c872a24cbefe5d41e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=94=B0=E9=A2=86?= Date: Sat, 15 Aug 2026 12:41:20 +0800 Subject: [PATCH] =?UTF-8?q?fix(knowledge):=20=E5=9B=BE=E8=B0=B1=E5=8F=AF?= =?UTF-8?q?=E8=A7=86=E5=8C=96=E5=9B=9E=E8=B0=83=E5=8F=82=E6=95=B0=E8=A1=A5?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B,=E4=BF=AE=E5=A4=8D=20TS7006=20=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit cy.nodes()/edges() 的 forEach/filter 与 tap 事件回调参数补 NodeSingular/EdgeSingular/EventObject 类型(隐式 any 在严格 tsc 下报错, 纯净 main 的 npm run build 即失败) --- .../knowledge/KnowledgeGraphVisualization.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/frontend-enterprise/src/components/knowledge/KnowledgeGraphVisualization.tsx b/frontend-enterprise/src/components/knowledge/KnowledgeGraphVisualization.tsx index d5944903..21f5d3c7 100644 --- a/frontend-enterprise/src/components/knowledge/KnowledgeGraphVisualization.tsx +++ b/frontend-enterprise/src/components/knowledge/KnowledgeGraphVisualization.tsx @@ -1,4 +1,4 @@ -import cytoscape, { type Core, type ElementDefinition, type LayoutOptions } from 'cytoscape'; +import cytoscape, { type Core, type EdgeSingular, type ElementDefinition, type EventObject, type LayoutOptions, type NodeSingular } from 'cytoscape'; import { ArrowDownLeft, ArrowUpRight, @@ -569,8 +569,8 @@ const GraphCanvas = forwardRef onSelectNode(event.target.id())); - cy.on('tap', (event) => { + cy.on('tap', 'node', (event: EventObject) => onSelectNode(String(event.target.id()))); + cy.on('tap', (event: EventObject) => { if (event.target === cy) onSelectNode(null); }); cy.on('zoom', () => updateSemanticLabels(cy)); @@ -594,14 +594,14 @@ const GraphCanvas = forwardRef { + const matchingNodes = cy.nodes().filter((node: NodeSingular) => { const graphNode = model.nodeById.get(node.id()); if (!graphNode) return false; const matchesType = selectedTypes.length === 0 || selectedTypes.includes(graphNode.concept.concept_type); return matchesType && knowledgeConceptMatches(graphNode.concept, query); }); cy.nodes().difference(matchingNodes).addClass('is-dimmed'); - cy.edges().forEach((edge) => { + cy.edges().forEach((edge: EdgeSingular) => { if (edge.source().hasClass('is-dimmed') || edge.target().hasClass('is-dimmed')) edge.addClass('is-dimmed'); }); if (selected.length) { @@ -829,7 +829,7 @@ function layoutOptions(layout: GraphLayout, animate: boolean): LayoutOptions { function updateSemanticLabels(cy: Core) { const lowZoom = cy.zoom() < 0.72; - cy.nodes().forEach((node) => { + cy.nodes().forEach((node: NodeSingular) => { const keepLabel = !lowZoom || Boolean(node.data('hub')) || node.hasClass('is-selected'); node.toggleClass('label-hidden', !keepLabel); });