ts实战系列十四:Record

.TS,数组、字符串、数组、接口非常常见

②. 如果要定义一个对象的key和value类型,可以用到TS的Record:
    a. Record后面的泛型就是对象键和值的类型

③. Record<K, T>构造具有给定类型T的一组属性K的类型

(1). 之前写法:

const nav: any = {}

const nav: { [key: 'A' | 'B' | 'C'] : number } = {}

(2). 需要一个对象,有ABC三个属性,属性的值必须是数字:

// 示例1
type keys = 'A' | 'B' | 'C'

const result: Record<keys, number> = {
  A: 1,
  B: 2,
  C: 3
}

// 示例2
interface PageInfo {
  title: string;
}

type Page = "home" | "about" | "contact"

const nav: Record<Page, PageInfo> = {
  about: { title: "about" },
  contact: { title: "contact" },
  home: { title: "home" },
}
### 使用 Vue 3、TypeScript 和 Vite 构建后台管理系统的实战教程 #### 项目概述 Vue-Vben-Admin 是一个基于 Vue 3.0、Vite、Ant Design Vue 和 TypeScript 的后台解决方案,旨在为开发中大型项目提供开箱即用的功能[^1]。此项目不仅提供了完整的功能模块,还涵盖了现代前端技术的最佳实践。 #### 技术栈介绍 为了更好地理解如何使用这些工具和技术来构建后台管理系统,以下是各个部分的技术要点: ##### Vite 开发环境配置 Vite 提供了更快的冷启动速度和热更新机制,使得开发者能够更高效地进行开发工作。安装并初始化一个新的 Vite 项目可以通过如下命令完成: ```bash npm create vite@latest my-vue-app --template vue-ts cd my-vue-app npm install npm run dev ``` ##### Vue 3 组件化编程 利用组合式 API (Composition API),可以更加灵活地组织逻辑代码。通过 `setup` 函数定义响应式的属性和服务端调用方法。例如,在创建自定义 Hook 来处理数据获取时可采用以下方式: ```typescript import { ref, onMounted } from 'vue'; export function useFetchData(url: string) { const data = ref(null); const loading = ref(true); async function fetchData() { try { const response = await fetch(url); if (!response.ok) throw new Error('Network response was not ok'); data.value = await response.json(); } catch (error) { console.error(error.message); } finally { loading.value = false; } } onMounted(() => fetchData()); return { data, loading }; } ``` ##### Ant Design Vue UI 库集成 Ant Design Vue 提供了一套丰富的组件库,支持按需加载特性,有助于减少打包体积。引入单个组件的方式如下所示: ```javascript // main.ts 中全局注册所需组件 import { Button, Layout } from 'ant-design-vue'; app.use(Button).use(Layout); ``` ##### 动态路由与权限控制 借助于 Vue Router 可实现页面间的导航以及动态加载不同路径下的视图文件;而针对特定用户的访问限制,则可通过中间件拦截请求来进行判断。 ```typescript const router = createRouter({ history: createWebHistory(), routes: [ { path: '/', name: 'Home', component: Home, meta: { requiresAuth: true }, // 添加元信息标记需要认证 }, ... ] }); router.beforeEach((to, _, next) => { if (to.matched.some(record => record.meta.requiresAuth)) { // 进行登录状态验证... } next(); }); ``` #### 示例项目推荐 对于希望深入学习或实际操作的朋友来说,建议参考 **Vue-Admin** 项目源码及其官方文档。该项目已经集成了众多实用特性和最佳实践案例,非常适合用来作为模板或者研究对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值