diff --git a/index.html b/index.html index 8620378..c29feaf 100644 --- a/index.html +++ b/index.html @@ -8,6 +8,6 @@
- + diff --git a/package-lock.json b/package-lock.json index 4e9a66e..158d752 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,11 +18,12 @@ "@eslint/js": "^9.39.4", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^6.0.0", + "@vitejs/plugin-react": "^6.0.1", "eslint": "^9.39.4", "eslint-plugin-react-hooks": "^7.0.1", "eslint-plugin-react-refresh": "^0.5.2", "globals": "^17.4.0", + "typescript": "^5.9.3", "vite": "^8.0.0" } }, @@ -3448,6 +3449,20 @@ "node": ">= 0.8.0" } }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/update-browserslist-db": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", diff --git a/package.json b/package.json index 6b68878..defe76e 100644 --- a/package.json +++ b/package.json @@ -20,11 +20,12 @@ "@eslint/js": "^9.39.4", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^6.0.0", + "@vitejs/plugin-react": "^6.0.1", "eslint": "^9.39.4", "eslint-plugin-react-hooks": "^7.0.1", "eslint-plugin-react-refresh": "^0.5.2", "globals": "^17.4.0", + "typescript": "^5.9.3", "vite": "^8.0.0" } } diff --git a/src/App.jsx b/src/App.tsx similarity index 100% rename from src/App.jsx rename to src/App.tsx diff --git a/src/main.jsx b/src/main.tsx similarity index 96% rename from src/main.jsx rename to src/main.tsx index 3950e6c..7e9bae9 100644 --- a/src/main.jsx +++ b/src/main.tsx @@ -4,7 +4,7 @@ import { ConfigProvider, App as AntApp } from 'antd' import zhCN from 'antd/locale/zh_CN' import 'antd/dist/reset.css' import './index.css' -import App from './App.jsx' +import App from './App' import { setMessageApi } from './api' // App 组件容器,用于获取 message API diff --git a/src/pages/Home.jsx b/src/pages/Home.tsx similarity index 93% rename from src/pages/Home.jsx rename to src/pages/Home.tsx index 579ecc8..bb1783a 100644 --- a/src/pages/Home.jsx +++ b/src/pages/Home.tsx @@ -1,4 +1,4 @@ -import { useState, useEffect } from 'react' +import React, { useState, useEffect } from 'react' import { Card, Row, Col, Statistic, Spin } from 'antd' import { UserOutlined, ShoppingOutlined, DollarOutlined } from '@ant-design/icons' import statsApi from '../api/modules/stats' @@ -44,6 +44,7 @@ function Home() { title="总用户数" value={stats.totalUsers} prefix={} + // @ts-ignore - antd v5 types incomplete styles={{ value: { color: '#3f8600' } }} /> @@ -54,6 +55,7 @@ function Home() { title="今日订单" value={stats.todayOrders} prefix={} + // @ts-ignore styles={{ value: { color: '#1890ff' } }} /> diff --git a/src/pages/Layout.jsx b/src/pages/Layout.tsx similarity index 100% rename from src/pages/Layout.jsx rename to src/pages/Layout.tsx diff --git a/src/pages/Login.jsx b/src/pages/Login.tsx similarity index 96% rename from src/pages/Login.jsx rename to src/pages/Login.tsx index b249548..a054a75 100644 --- a/src/pages/Login.jsx +++ b/src/pages/Login.tsx @@ -1,4 +1,4 @@ -import { useState } from 'react' +import React, { useState } from 'react' import { useNavigate } from 'react-router-dom' import { Form, Input, Button, message } from 'antd' import { UserOutlined, LockOutlined } from '@ant-design/icons' @@ -80,7 +80,7 @@ function Login({ onLogin }) { ) } -const styles = { +const styles: Record = { container: { display: 'flex', justifyContent: 'center', diff --git a/src/pages/Menu1.jsx b/src/pages/Menu1.tsx similarity index 100% rename from src/pages/Menu1.jsx rename to src/pages/Menu1.tsx diff --git a/src/pages/Menu2.jsx b/src/pages/Menu2.tsx similarity index 94% rename from src/pages/Menu2.jsx rename to src/pages/Menu2.tsx index 4e39a38..21441d3 100644 --- a/src/pages/Menu2.jsx +++ b/src/pages/Menu2.tsx @@ -42,10 +42,8 @@ function Menu2() { })) setSaving(true) - const response = await settingsApi.save(updatedSettings) - if (response.code === 0) { - message.success('保存成功') - } + await settingsApi.save(updatedSettings) + message.success('保存成功') } catch (error) { message.error('保存失败: ' + error.message) } finally { diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..217d88e --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + "strict": false, + "noUnusedLocals": false, + "noUnusedParameters": false, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} \ No newline at end of file diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..decf631 --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true, + "strict": true + }, + "include": ["vite.config.js"] +} \ No newline at end of file