From 98725bbecfca25dd8a4cda36a4d4c7f07edd6575 Mon Sep 17 00:00:00 2001 From: Slinetrac Date: Sat, 18 Oct 2025 16:11:42 +0800 Subject: [PATCH] fix: TS errors --- eslint.config.ts | 4 ++-- src/components/profile/profile-item.tsx | 6 +++--- src/components/profile/proxies-editor-viewer.tsx | 8 ++++---- src/components/profile/rules-editor-viewer.tsx | 4 ++-- src/providers/app-data-provider.tsx | 2 +- src/services/global-log-service.ts | 2 +- tsconfig.json | 2 +- vite.config.mts | 2 +- 8 files changed, 15 insertions(+), 15 deletions(-) diff --git a/eslint.config.ts b/eslint.config.ts index b8cf71f1..8146350f 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -1,5 +1,6 @@ -import eslintReact from "@eslint-react/eslint-plugin"; import eslintJS from "@eslint/js"; +import eslintReact from "@eslint-react/eslint-plugin"; +import { defineConfig } from "eslint/config"; import configPrettier from "eslint-config-prettier"; import { createTypeScriptImportResolver } from "eslint-import-resolver-typescript"; import pluginImportX from "eslint-plugin-import-x"; @@ -7,7 +8,6 @@ import pluginPrettier from "eslint-plugin-prettier"; import pluginReactHooks from "eslint-plugin-react-hooks"; import pluginReactRefresh from "eslint-plugin-react-refresh"; import pluginUnusedImports from "eslint-plugin-unused-imports"; -import { defineConfig } from "eslint/config"; import globals from "globals"; import tseslint from "typescript-eslint"; diff --git a/src/components/profile/profile-item.tsx b/src/components/profile/profile-item.tsx index 7e25c1a4..c9ffeb23 100644 --- a/src/components/profile/profile-item.tsx +++ b/src/components/profile/profile-item.tsx @@ -176,7 +176,7 @@ export const ProfileItem = (props: Props) => { // 订阅定时器更新事件 useEffect(() => { - let refreshTimeout: ReturnType | undefined; + let refreshTimeout: number | undefined; // 处理定时器更新事件 - 这个事件专门用于通知定时器变更 const handleTimerUpdate = (event: Event) => { const source = event as CustomEvent & { payload?: string }; @@ -185,7 +185,7 @@ export const ProfileItem = (props: Props) => { // 只有当更新的是当前配置时才刷新显示 if (updatedUid === itemData.uid && showNextUpdate) { console.log(`收到定时器更新事件: uid=${updatedUid}`); - if (refreshTimeout) { + if (refreshTimeout !== undefined) { clearTimeout(refreshTimeout); } refreshTimeout = window.setTimeout(() => { @@ -198,7 +198,7 @@ export const ProfileItem = (props: Props) => { window.addEventListener("verge://timer-updated", handleTimerUpdate); return () => { - if (refreshTimeout) { + if (refreshTimeout !== undefined) { clearTimeout(refreshTimeout); } // 清理事件监听 diff --git a/src/components/profile/proxies-editor-viewer.tsx b/src/components/profile/proxies-editor-viewer.tsx index d1c19cec..ccf2891c 100644 --- a/src/components/profile/proxies-editor-viewer.tsx +++ b/src/components/profile/proxies-editor-viewer.tsx @@ -151,7 +151,7 @@ export const ProxiesEditorViewer = (props: Props) => { const lines = uris.trim().split("\n"); let idx = 0; const batchSize = 50; - let parseTimer: ReturnType | undefined; + let parseTimer: number | undefined; const parseBatch = () => { const end = Math.min(idx + batchSize, lines.length); @@ -175,7 +175,7 @@ export const ProxiesEditorViewer = (props: Props) => { if (idx < lines.length) { parseTimer = window.setTimeout(parseBatch, 0); } else { - if (parseTimer) { + if (parseTimer !== undefined) { clearTimeout(parseTimer); parseTimer = undefined; } @@ -238,7 +238,7 @@ export const ProxiesEditorViewer = (props: Props) => { } }; let idleId: number | undefined; - let timeoutId: ReturnType | undefined; + let timeoutId: number | undefined; if (window.requestIdleCallback) { idleId = window.requestIdleCallback(serialize); } else { @@ -248,7 +248,7 @@ export const ProxiesEditorViewer = (props: Props) => { if (idleId !== undefined && window.cancelIdleCallback) { window.cancelIdleCallback(idleId); } - if (timeoutId) { + if (timeoutId !== undefined) { clearTimeout(timeoutId); } }; diff --git a/src/components/profile/rules-editor-viewer.tsx b/src/components/profile/rules-editor-viewer.tsx index 2e8bb75e..8f2aa845 100644 --- a/src/components/profile/rules-editor-viewer.tsx +++ b/src/components/profile/rules-editor-viewer.tsx @@ -355,7 +355,7 @@ export const RulesEditorViewer = (props: Props) => { } }; let idleId: number | undefined; - let timeoutId: ReturnType | undefined; + let timeoutId: number | undefined; if (window.requestIdleCallback) { idleId = window.requestIdleCallback(serialize); } else { @@ -365,7 +365,7 @@ export const RulesEditorViewer = (props: Props) => { if (idleId !== undefined && window.cancelIdleCallback) { window.cancelIdleCallback(idleId); } - if (timeoutId) { + if (timeoutId !== undefined) { clearTimeout(timeoutId); } }; diff --git a/src/providers/app-data-provider.tsx b/src/providers/app-data-provider.tsx index 8f8419e9..05341b15 100644 --- a/src/providers/app-data-provider.tsx +++ b/src/providers/app-data-provider.tsx @@ -90,7 +90,7 @@ export const AppDataProvider = ({ const refreshThrottle = 500; let isUnmounted = false; - const scheduledTimeouts = new Set>(); + const scheduledTimeouts = new Set(); const cleanupFns: Array<() => void> = []; const registerCleanup = (fn: () => void) => { diff --git a/src/services/global-log-service.ts b/src/services/global-log-service.ts index f28d5466..3c238153 100644 --- a/src/services/global-log-service.ts +++ b/src/services/global-log-service.ts @@ -63,7 +63,7 @@ export const fetchLogsViaIPCPeriodically = async () => { }; // 初始化全局日志服务 (仅IPC模式) -let ipcPollingInterval: number | null = null; +let ipcPollingInterval: ReturnType | null = null; let isInitializing = false; // 添加初始化标志 export const initGlobalLogService = ( diff --git a/tsconfig.json b/tsconfig.json index 3046c7da..864dc4ef 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,7 +11,7 @@ "strict": true, "forceConsistentCasingInFileNames": true, "module": "ESNext", - "moduleResolution": "Node", + "moduleResolution": "Bundler", "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, diff --git a/vite.config.mts b/vite.config.mts index 86f0d0e4..41323f29 100644 --- a/vite.config.mts +++ b/vite.config.mts @@ -2,11 +2,11 @@ import path from "node:path"; import legacy from "@vitejs/plugin-legacy"; import react from "@vitejs/plugin-react"; -import { defineConfig } from "vitest/config"; import monacoEditorPlugin, { type IMonacoEditorOpts, } from "vite-plugin-monaco-editor"; import svgr from "vite-plugin-svgr"; +import { defineConfig } from "vitest/config"; const monacoEditorPluginDefault = (monacoEditorPlugin as any).default as ( options: IMonacoEditorOpts, ) => any;