GitHub上的TypeScript:7个能提升你代码水平的仓库

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

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

开始课程

为什么TypeScript是新的标准,以及在哪里寻找最佳代码?

\n\n

如果你还在用JavaScript编写代码,并且还没有转向TypeScript,那你就是在浪费时间。说真的。TypeScript(或TS)不仅仅是JS的“超集”。它提供了严格的类型检查、自动补全、无需担心破坏一切的重构,当然还有开源代码,你可以(也应该)去学习。

\n\n

在这篇文章中,我们不会教你如何安装TypeScript。相反,我们将前往GitHub,剖析7个最佳的仓库,它们不仅展示了优雅的解决方案,还能帮助你编写更干净、更安全、更具可扩展性的代码。每个项目都是一本用真实代码编写的教科书。

\n\n

我们在仓库中寻找什么?

\n\n
    \n
  • 架构模式——如何构建一个一个月后你不想删除的项目。
  • \n
  • 严格类型检查的示例——TS发挥100%作用的地方。
  • \n
  • 实际价值——可以立即使用的库。
  • \n
\n\n

开始吧!

\n\n

1. NestJS——用于严肃应用的框架

\n\n

仓库: github.com/nestjs/nest

\n\n

NestJS可以说是TypeScript上最优雅的框架。它借鉴了Angular的思想(模块、装饰器、依赖注入),将服务端代码变成了艺术品。

\n\n

为什么值得学习:

\n
    \n
  • 清晰的模块划分。
  • \n
  • 内置支持GraphQL、WebSockets、RabbitMQ。
  • \n
  • 文档——堪称典范。
  • \n
\n\n

来自仓库的代码示例(控制器和服务):

\n\n
// cats.controller.ts\nimport { Controller, Get, Post, Body } from '@nestjs/common';\nimport { CatsService } from './cats.service';\nimport { CreateCatDto } from './dto/create-cat.dto';\nimport { Cat } from './interfaces/cat.interface';\n\n@Controller('cats')\nexport class CatsController {\n  constructor(private catsService: CatsService) {}\n\n  @Post()\n  async create(@Body() createCatDto: CreateCatDto) {\n    this.catsService.create(createCatDto);\n  }\n\n  @Get()\n  async findAll(): Promise<Cat[]> {\n    return this.catsService.findAll();\n  }\n}\n
\n\n

请注意装饰器@Controller、@Get以及严格的接口Cat。这不仅仅是代码——这是成千上万个项目构建的模板。

\n\n

2. Prisma——不让人烦躁的ORM

\n\n

仓库: github.com/prisma/prisma

\n\n

Prisma是一个用于TypeScript和Node.js的现代ORM(对象关系映射)。它根据你的数据库模式自动生成类型。这意味着像“字段不存在”这样的错误会在编译阶段被捕获,而不是在运行时。

\n\n

你能学到什么:“Schema-first”方法和自动类型生成。

\n\n

文档中的示例:

\n\n
// schema.prisma\nmodel User {\n  id    Int     @id @default(autoincrement())\n  email String  @unique\n  name  String?\n  posts Post[]\n}\n\nmodel Post {\n  id        Int     @id @default(autoincrement())\n  title     String\n  content   String?\n  author    User    @relation(fields: [authorId], references: [id])\n  authorId  Int\n}\n\n// usage.ts\nimport { PrismaClient } from '@prisma/client';\n\nconst prisma = new PrismaClient();\n\nasync function main() {\n  const user = await prisma.user.create({\n    data: {\n      email: 'alice@prisma.io',\n      name: 'Alice',\n      posts: {\n        create: { title: 'Hello World' },\n      },\n    },\n  });\n  console.log(user);\n}\n
\n\n

Prisma是TypeScript如何让数据处理变得安全且快速的完美示例。

\n\n

3. RxJS——响应式编程库

博客

书籍推荐