@core 基础设施
@skyroc/types
全局类型声明包,零运行时依赖
概览
| 项 | 值 |
|---|---|
| 包名 | @skyroc/types |
| 版本 | 1.0.0 |
| 依赖 | 无(零依赖) |
| 子入口 | .、./types(指向 index.d.ts) |
@skyroc/types 没有任何运行时值导出,它通过 declare global 注入全局命名空间,所有包都能直接使用这些类型而无需 import。
目录结构
src/
├── api/ # 后端接口契约
│ ├── auth.d.ts
│ ├── common.d.ts
│ ├── route.d.ts
│ ├── service.d.ts
│ └── system-manage.d.ts
├── app/ # 应用内类型
│ ├── common.d.ts
│ ├── global.d.ts
│ ├── menu.d.ts
│ ├── router.d.ts
│ ├── storage.d.ts
│ └── union-key.d.ts
├── locales/i18n.d.ts # i18n Schema 与 key 推导
├── index.d.ts
└── index.ts # re-export 各 .d.ts 触发类型合并全局命名空间
| 命名空间 | 主要类型 | 用途 |
|---|---|---|
Api.Auth | LoginParams、LoginToken、UserInfo | 登录与用户信息 |
Api.Common | PaginatingQueryRecord<T>、CommonRecord<T>、EnableStatus | 分页与通用记录 |
Api.Route | BackendRoute、BackendRouteResponse | 后端动态路由 |
Api.Service | Response<T>、ServiceConfig | 后端响应 envelope、多 baseURL 配置 |
Api.SystemManage | Role、User、Menu、MenuTree | 系统管理实体 |
Common | Option<K, M>、YesOrNo、RecordNullable<T> | 前端通用工具类型 |
App.Global | Tab、AntdMenu、AdminLayout.HeaderProps | 应用全局 |
Router | RoutePath、RouteId、Meta、RouterContext | 路由(可扩展注册表) |
StorageType | Local、Session | 本地存储 key(扩展点) |
UnionKey | ThemeLayoutMode、LoginModule 等 | 联合字面量 |
I18n | Schema、I18nKey、$T | i18n 类型推导 |
可扩展的注册表模式
Router、StorageType 等使用「空接口 + 模块增强」模式,让应用按需扩展:
// 应用侧 src/types/router.d.ts
declare global {
namespace Router {
interface RoutePathRegistry {
'/home': '/home';
'/manage/user': '/manage/user';
}
}
}这样 Router.RoutePath 就会自动包含应用注册的路径,获得类型安全的导航。StorageType.Local / StorageType.Session 同理,用于约束 localStorage key。
使用
// 无需 import,直接使用全局类型
function getUser(): Api.Auth.UserInfo { /* ... */ }
const option: Common.Option = { label: '启用', value: '1' };该包无
__tests__(纯类型声明无需运行时测试)。