news 2026/3/27 13:23:45

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/3/10 12:31:49

牛批插件,让你的电脑瞬间丝滑!

啰嗦几句 浏览器插件可以实现资源嗅控、多线程下载、屏蔽广告、解除禁止复制等等功能&#xff0c;可以说插件是浏览器的灵魂&#xff01; 而我们比较经常用到的插件有油猴、1DM、标签页等等。今天给大家推荐一款挺牛的拖拽预览的插件&#xff0c;非常方便&#xff0c;有需要的…

作者头像 李华
网站建设 2026/3/27 1:38:34

Docker入门

Docker是一款快速构建、运行、管理应用的工具自动搜索并下载应用镜像。镜像不仅包含应用本身&#xff0c;还包含应用运行所需要的环境&#xff0c;配置&#xff0c;系统函数库、Docker会在运行镜像时创建一个隔离环境&#xff0c;称为容器。镜像仓库&#xff1a;Docker Hub入门…

作者头像 李华
网站建设 2026/3/23 20:26:03

22、正则表达式:从基础到高级应用

正则表达式:从基础到高级应用 1. 正则表达式基础 正则表达式除了字面字符外,还包含元字符,用于指定更复杂的匹配规则。常见的元字符有: ^ $ . [ ] { } - ? * + ( ) | \ ,其他字符则被视为字面字符。不过,反斜杠字符在某些情况下用于创建元序列,也可让元字符被当作字…

作者头像 李华
网站建设 2026/3/24 23:03:53

取能模块:无源自取电创新解决方案

提及无源自取电&#xff0c;很多人会第一时间联想到智能手机的无线充电功能&#xff0c;原则上理解的没错&#xff0c;只是相较于无源自取电这种技术&#xff0c;二者本质上应用的领域有所区别。前者目前适用于中高压和低压输电线路上&#xff0c;以非接触式取能的核心优势&…

作者头像 李华
网站建设 2026/3/13 17:47:47

30、编写Shell脚本入门与项目实践

编写Shell脚本入门与项目实践 1. 编写第一个脚本 首先,我们来编写一个简单的“Hello World”脚本。在命令行中输入以下代码: [me@linuxbox ~]$ echo Hello World! # This is a comment too Hello World!这里的注释在命令行中作用不大,但在脚本里是很有用的。脚本的第一行…

作者头像 李华
网站建设 2026/3/26 20:00:13

启动进程,并返回新进程id(C++源码)

1、概述 启动进程,并返回新进程id,支持场景: 1、支持绝对路径: C:\Program Files\Google\Chrome\Application\chrome.exe 2、支持环境变量路径:%localappdata%\\Feishu\\Feishu.exe 1.1、调用示例 // 调用示例// 启动进程,并返回新进程id// 支持绝对路径: C:\Program Fil…

作者头像 李华