提升作品集:5个让雇主印象深刻的TypeScript项目

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

为什么TypeScript是你作品集中的王牌?

\n\n

JavaScript的世界就像狂野西部。动态类型带来了自由,但常常让代码变成一场赌博。TypeScript就像一位警长,来维持秩序。如果你不仅想写代码,还想构建可靠、可扩展的系统——那么作品集中的TypeScript项目会为你说明一切。

\n\n

想象一下:你去面试。其他人都带着标准的React待办事项列表。而你有一个完全类型化的Telegram机器人,带有认证、实时聊天,或者你自己的小型编译器。承认吧,这听起来更有分量。在本文中,我们将探讨5个TypeScript作品集创意,它们不仅能提升你的技能,还能让招聘人员对你的GitHub流连忘返。

\n\n

选择标准:什么让项目变得“顶级”?

\n\n

在深入代码之前,让我们先达成共识。一个好的TypeScript个人项目应该:

\n
    \n
  • 解决一个实际问题(或者至少模拟这一点)。
  • \n
  • 使用TypeScript的高级特性:泛型、装饰器、工具类型。
  • \n
  • 有测试——代码覆盖率显示你的责任心。
  • \n
  • 有文档——包含安装和使用示例的README。
  • \n
\n\n

准备好了吗?开始吧!

\n\n

1. 完全类型化的财务管理Telegram机器人

\n\n

机器人是经典。但用TypeScript构建一个架构良好的机器人本身就是一种挑战。我们不只是挂载一个“你好”处理器,而是构建一个带有DI容器和严格模型的微服务。

\n\n

内部包含什么?

\n
    \n
  • 数据库(SQLite或PostgreSQL)配合TypeORM。
  • \n
  • 命令:/add_expense, /stats, /budget。
  • \n
  • 通过枚举定义支出类别。
  • \n
\n\n

代码示例:类型化模型和命令

\n\n
// models/Expense.ts\nimport { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn } from 'typeorm';\nimport { Category } from './enums';\n\n@Entity()\nexport class Expense {\n    @PrimaryGeneratedColumn()\n    id!: number;\n\n    @Column()\n    userId!: number;\n\n    @Column('decimal', { precision: 10, scale: 2 })\n    amount!: number;\n\n    @Column({\n        type: 'enum',\n        enum: Category,\n        default: Category.OTHER\n    })\n    category!: Category;\n\n    @CreateDateColumn()\n    createdAt!: Date;\n}\n\n// commands/addExpense.ts\nimport { Context } from 'telegraf';\nimport { getRepository } from 'typeorm';\nimport { Expense } from '../models/Expense';\nimport { Category } from '../models/enums';\n\nexport async function addExpense(ctx: Context, amount: number, category: Category) {\n    const repo = getRepository(Expense);\n    const expense = repo.create({\n        userId: ctx.from!.id,\n        amount,\n        category\n    });\n    await repo.save(expense);\n    await ctx.reply(`✅ 已添加:${amount} 卢布,类别:${category}`);\n}\n
\n\n

为什么这很酷?你展示了通过ORM使用数据库的能力,对异步的理解以及严格的数据类型化。此外,这是一个真实的使用场景。

\n\n

2. 基于WebSocket + React的实时看板任务板

\n\n

做一个待办事项列表很无聊。做一个支持拖放和WebSocket的多用户看板,用TypeScript实现——这才有趣。在这里,你展示了自己作为全栈开发者的能力。

\n\n

架构

\n
    \n
  • 后端:Express + Socket.io + TypeScript。
  • \n
  • 前端:React + react-beautiful-dnd + Redux Toolkit。
  • \n
  • 所有事件的类型化(socket事件作为联合类型)。
  • \n
\n\n

示例:类型化的WebSocket处理器

\n\n
// types/socket-events.ts\nexport interface ServerToClientEvents {\n    taskMoved: (task: Task, fromColumn: ColumnId, toColumn: ColumnId) => void;\n    newTask: (task: Task) => void;\n}\n                

博客

书籍推荐