TypeScript中的Clean Code:面向实践者的原则与示例

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

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

开始课程

TypeScript中的Clean Code:实践中的原则与示例



整洁代码(Clean Code)不仅仅是一个流行术语,更是专业开发者的基本技能。在TypeScript的背景下,它为动态的JavaScript世界增添了静态类型化,整洁代码的原则变得更加重要。TypeScript为我们提供了强大的代码自文档化工具,但如果没有正确的方法,它们可能会变成一团乱麻。



在本文中,我们将探讨适用于TypeScript的Clean Code关键原则,并研究实用的示例,帮助您编写更易读、更易维护且更可靠的代码。



1. 命名:用业务语言说话



Clean Code的第一个也是最明显的原则是正确命名。变量、函数、类和接口的名称应反映其本质和开发者的意图。TypeScript凭借其严格的类型化,可以使名称更具信息量。



糟糕的示例:

// 这个函数是做什么的?需要多长时间才能理解?function d(a: number, b: number): number {    return a * b - (a + b);}

// 这个接口又是什么?interface I { n: string; a: number; e: string;}


良好的示例:

// 计算折扣价格的函数(含阈值)function calculateDiscountedPrice(price: number, discountPercent: number): number {    const discountAmount = price * (discountPercent / 100);    return price - discountAmount;}

// 具有明确字段的用户接口interface UserProfile { name: string; age: number; email: string;}


TypeScript的规则:

  • 接口 — 使用不带前缀 I 的名词(例如 User,而不是 IUser)。现代TypeScript和ESLint推荐这种方法。
  • 类型 — 对于复杂联合类型,使用 | 和有意义的名称:StatusType、ApiResponse。
  • 布尔变量 — 以 is、has、should 开头:isActive、hasPermission。
  • 函数 — 使用动词:getUserData、validateEmail、processOrder。


2. TypeScript中的SOLID:实际应用



SOLID原则(单一职责、开闭原则、里氏替换、接口隔离、依赖反转)由于TypeScript对接口、抽象类和泛型的支持,非常适合应用于TypeScript。



单一职责原则(SRP):一个类应该只有一个修改的原因。



// 违反SRP:类做得太多class UserService {    createUser(data: any) { /* ... */ }    sendEmail(email: string) { /* ... */ }    generateReport() { /* ... */ }}

// 正确方法:分离职责class UserRepository { save(user: User): void { /* ... */ }}

class EmailService { sendWelcomeEmail(email: string): void { /* ... */ }}

class ReportGenerator { generateUserReport(users: User[]): Report { /* ... */ }}


里氏替换原则(LSP):子类应该可以与基类互换。在TypeScript中,这在处理继承时尤其重要。



// 违反LSP:子类缩小了契约class Bird {    fly(): void { console.log('Flying'); }}

class Penguin extends Bird { fly(): void { throw new Error('Penguins cannot fly!'); }}

// 正确:提取接口interface Flyable { fly(): void;}

class Bird implements Flyable { fly(): void { console.log('Flying'); }}

class Penguin { s

博客

书籍推荐