news 2026/5/10 9:55:27

TypeScript开发基础(5)——用户信息卡片制作(数据类型应用案例)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
TypeScript开发基础(5)——用户信息卡片制作(数据类型应用案例)

前面已经学习了TypeScript中的常用数据类型,下面来看一下它们的简单应用。

首先还是来看一下效果:

每条用户信息包含id、姓名、密码、邮箱、部门、角色、加入日期及是否活跃等信息。

实现步骤:

1. 制作网页显示模板userinfo.html。

这部分主要是显示框架的制作和相应部分的样式设计。

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style> :root { --primary-color: #3498db; --secondary-color: #2ecc71; --background-color: #f9f9f9; --card-color: #ffffff; --text-color: #333333; --border-color: #e0e0e0; } * { margin: 0; padding: 0; box-sizing: border-box; font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; } body { background-color: var(--background-color); color: var(--text-color); line-height: 1.6; padding: 20px; } .container { max-width: 1200px; margin: 0 auto; } header { text-align: center; margin-bottom: 40px; padding: 20px; background: linear-gradient( 135deg, var(--primary-color), var(--secondary-color) ); color: white; border-radius: 10px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); } h1 { font-size: 2.5rem; margin-bottom: 10px; } .description { font-size: 1.1rem; opacity: 0.9; } .controls { display: flex; justify-content: space-between; margin-bottom: 30px; flex-wrap: wrap; gap: 15px; } .search-box, .filter-options { flex: 1; min-width: 250px; } .data-section { margin-bottom: 40px; } .section-title { font-size: 1.8rem; margin-bottom: 20px; color: var(--primary-color); border-bottom: 2px solid var(--primary-color); padding-bottom: 10px; } .cards-container { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 20px; margin-bottom: 30px; } .card { background-color: var(--card-color); border-radius: 10px; padding: 20px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); transition: transform 0.3s ease, box-shadow 0.3s ease; } .card:hover { transform: translateY(-5px); box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15); } .card h3 { color: var(--primary-color); margin-bottom: 10px; } .card p { margin-bottom: 8px; } .status { display: inline-block; padding: 5px 10px; border-radius: 20px; font-size: 0.8rem; font-weight: bold; } .active { background-color: #e8f6f3; color: var(--secondary-color); } .inactive { background-color: #fdeaea; color: #e74c3c; } @media (max-width: 768px) { .controls { flex-direction: column; } .cards-container { grid-template-columns: 1fr; } } </style> </head> <body> <div class="container"> <div class="data-section"> <h2 class="section-title">用户信息卡片</h2> <div class="cards-container" id="usersContainer"> <!-- 用户卡片将通过TypeScript动态生成 --> <script src="user.js"></script> </div> </div> </div> </body> </html>

2. 设计用户信息显示的TypeScript文件user.ts。

这个文件主要由四部分组成。

(1)用户信息接口User。
interface User { id: number; name: string; password: string; email: string; department: string; role: string; isActive: boolean; joinDate: string; }
(2)定义测试数据。
const users:User[] = [ { id: 1, name: "张三", password: "123456", email: "zhangsan@example.com", department: "软件开发部", role: "管理员", isActive: true, joinDate: "2022-01-15", }, { id: 2, name: "李四", password: "123456", email: "lisi@example.com", department: "软件开发部", role: "编辑", isActive: true, joinDate: "2022-03-22", }, { id: 3, name: "王五", password: "123456", email: "wangwu@example.com", department: "测试部", role: "用户", isActive: false, joinDate: "2021-11-05", }, { id: 4, name: "赵六", password: "123456", email: "zhaoliu@example.com", department: "技术部", role: "用户", isActive: true, joinDate: "2023-02-10", }, { id: 5, name: "钱七", password: "123456", email: "qianqi@example.com", department: "技术部", role: "编辑", isActive: false, joinDate: "2022-07-30", }, { id: 6, name: "孙八", password: "123456", email: "sunba@example.com", department: "测试部", role: "管理员", isActive: true, joinDate: "2022-09-18", }, { id: 7, name: "周九", password: "123456", email: "zhoujiu@example.com", department: "软件开发部", role: "用户", isActive: true, joinDate: "2022-05-12", } ];
(3)渲染用户卡片的函数renderUsers。
function renderUsers(usersData:User[]):void { const container = document.getElementById("usersContainer")!; container.innerHTML = ""; usersData.forEach((user) => { const card = document.createElement("div"); card.className = "card"; const statusClass = user.isActive ? "status active" : "status inactive"; const statusText = user.isActive ? "活跃" : "非活跃"; card.innerHTML = ` <h3>${user.name}</h3> <p><strong>密码:</strong> ${user.password}</p> <p><strong>邮箱:</strong> ${user.email}</p> <p><strong>角色:</strong> ${user.role}</p> <p><strong>部门:</strong> ${user.department}</p> <p><strong>加入日期:</strong> ${user.joinDate}</p> <p><span class="${statusClass}">${statusText}</span></p> `; container.appendChild(card); }); }
(4)渲染函数调用

renderUsers(users);

3. 生成user.js文件。

在vscode终端中输入编译命令:tsc user.ts,在当前文件夹下会自动生成user.js文件。最后,直接在浏览器中打开userInfo.html即可。

注意事项:user.ts、user.js和userInfo.html三个文件应当放在同一个文件夹中。

附上user.ts完整代码。

interface User { id: number; name: string; password: string; email: string; department: string; role: string; isActive: boolean; joinDate: string; } // 测试数据 const users:User[] = [ { id: 1, name: "张三", password: "123456", email: "zhangsan@example.com", department: "软件开发部", role: "管理员", isActive: true, joinDate: "2022-01-15", }, { id: 2, name: "李四", password: "123456", email: "lisi@example.com", department: "软件开发部", role: "编辑", isActive: true, joinDate: "2022-03-22", }, { id: 3, name: "王五", password: "123456", email: "wangwu@example.com", department: "测试部", role: "用户", isActive: false, joinDate: "2021-11-05", }, { id: 4, name: "赵六", password: "123456", email: "zhaoliu@example.com", department: "技术部", role: "用户", isActive: true, joinDate: "2023-02-10", }, { id: 5, name: "钱七", password: "123456", email: "qianqi@example.com", department: "技术部", role: "编辑", isActive: false, joinDate: "2022-07-30", }, { id: 6, name: "孙八", password: "123456", email: "sunba@example.com", department: "测试部", role: "管理员", isActive: true, joinDate: "2022-09-18", }, { id: 7, name: "周九", password: "123456", email: "zhoujiu@example.com", department: "软件开发部", role: "用户", isActive: true, joinDate: "2022-05-12", } ]; // 渲染用户卡片 function renderUsers(usersData:User[]):void { const container = document.getElementById("usersContainer")!; container.innerHTML = ""; usersData.forEach((user) => { const card = document.createElement("div"); card.className = "card"; const statusClass = user.isActive ? "status active" : "status inactive"; const statusText = user.isActive ? "活跃" : "非活跃"; card.innerHTML = ` <h3>${user.name}</h3> <p><strong>密码:</strong> ${user.password}</p> <p><strong>邮箱:</strong> ${user.email}</p> <p><strong>角色:</strong> ${user.role}</p> <p><strong>部门:</strong> ${user.department}</p> <p><strong>加入日期:</strong> ${user.joinDate}</p> <p><span class="${statusClass}">${statusText}</span></p> `; container.appendChild(card); }); } renderUsers(users);
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/10 5:06:13

SCI一作含金量多高?

SCI一作含金量多高&#xff1f;SCI论文第一作者含金量高吗&#xff1f;很多作者对于发表在SCI一区、二区、三区、四区上的论文的一作、二作、三作&#xff0c;还有通讯的作者的含金量不是很清楚。下面淘淘论文给大家详细讲解这个问题。一、SCI一作的含金量一篇SCI论文中&#x…

作者头像 李华
网站建设 2026/5/10 9:23:09

安装即是永久会员,请低调使用!

引言 经常玩机的小伙伴一定对虚拟机不陌生&#xff0c;因为虚拟机是一个完全隔离环境中的完整计算机系统&#xff0c;运用这样一个系统可以随意安装软件而不怕系统崩溃。 而虚拟机我们平常用得最多的是PC端的&#xff0c;比如VMware&#xff0c;手机端的我好像没介绍过&#x…

作者头像 李华
网站建设 2026/5/5 8:50:39

免费试用版,就挺牛X!

软件介绍 首先声明&#xff0c;这款软件有免费试用版还有高级版&#xff0c;大家用免费试用版就可以了&#xff0c;没必要用高级版&#xff0c;因为同类的软件也不少了&#xff01; 今天介绍的这款软件名字叫&#xff1a;Waifu2x-Extension-GUI&#xff0c;是一款可以无损放大…

作者头像 李华
网站建设 2026/5/9 12:31:06

300TypeScript基础知识

主要学习react中ts的使用和概念第一阶段&#xff1a;Ts基础 TypeScript 的核心思想是&#xff1a;给变量穿上约束的衣服。 1. 原始类型、数组、元组 let name: string "Gemini"; let age: number 25; let isAI: boolean true;// 数组的两种写法 let skills: strin…

作者头像 李华
网站建设 2026/5/10 8:25:35

军队文职资源合集

军队文职 文件大小: 11.4GB内容特色: 军队文职全套课程&#xff0c;11.4GB系统资料适用人群: 备考军队文职岗位的在职/应届生核心价值: 覆盖笔试面试&#xff0c;一站式提分上岸下载链接: https://pan.quark.cn/s/ebc6b2518f62 2026年军队文职押题&模拟卷 文件大小: 4.2…

作者头像 李华
网站建设 2026/5/9 15:56:21

九章算Adv. Mater.解读【水凝胶】中山大学附属第五医院/华南理工大学:按压密封水凝胶贴片,实现深度切口的快速止血与修复

【文章信息】通讯作者&#xff1a;中山大学附属第五医院彭欣副研究员、华南理工大学边黎明教授第一作者&#xff1a;中山大学附属第五医院2022级联培博士研究生袁康瑞共同第一作者&#xff1a;中山大学附属第五医院2023级硕士研究生何川东该成果得到了国家自然科学基金项目与中…

作者头像 李华