TypeScript 类型
灵动桌面框架的 TypeScript 类型定义,位于 src/types/ 目录(按模块拆分为 config.ts、system.ts,由 src/types/index.ts 统一导出)。对应的 Rust 结构体在 src-tauri/src/models/mod.rs。
import type { AppConfig, SystemInfo } from '@/types'
AppConfig
配置项数据结构(get_all_config 的元素类型)。
interface AppConfig {
key: string
value: string
}
app_config 表中虽有 created_at、updated_at、deleted_at 列,但查询只返回 key 与 value。
SystemInfo
系统信息数据结构(get_system_info 的返回值)。src/types/system.ts 中的定义:
interface SystemInfo {
os: string
arch: string
appVersion: string
dataDir: string
}
字段名与后端不一致
Rust 侧 SystemInfo 未加 #[serde(rename_all = "camelCase")],实际返回的 JSON 为:
{
os: string // std::env::consts::OS,如 "windows" / "macos" / "linux"
arch: string // std::env::consts::ARCH,如 "x86_64" / "aarch64"
app_version: string // 应用版本
data_dir: string // 应用数据目录,取不到时为 "unknown"
}
因此按上面的 TS 类型读取 appVersion / dataDir 会得到 undefined。二选一对齐:给 Rust 结构体加 #[serde(rename_all = "camelCase")],或把 TS 字段改成 snake_case。
CommandError
命令失败时的错误结构,定义在 src/lib/api/client.ts,经 @/lib/api 导出。
interface CommandError {
code: string
message: string
}
错误码见 错误码速查。
类型对照
前后端类型必须严格对齐,字段名也一样(serde 默认不改名):
| Rust | TypeScript | 示例 |
|---|---|---|
String | string | 文本内容 |
i64 | number | ID、计数 |
bool | boolean | 开关标志 |
Vec<T> | T[] | 列表 |
Option<T> | T | null | 可空值 |
() | void | 无返回值 |