🎯 学习目标

  • 理解静态成员的概念
  • 掌握 static 关键字的使用
  • 学会定义静态属性和静态方法
  • 了解静态成员的实际应用

📝 静态属性和方法

class User { // 静态属性:所有实例共享 static count: number = 0; static readonly version: string = '1.0.0'; // 实例属性 name: string; constructor(name: string) { this.name = name; User.count++; // 访问静态属性 } // 静态方法 static getCount(): number { return User.count; } static createAnonymous(): User { return new User('Anonymous'); } } // 访问静态成员:通过类名访问 console.log(User.version); // '1.0.0' console.log(User.count); // 0 const user1 = new User('Alice'); const user2 = new User('Bob'); console.log(User.count); // 2 console.log(User.getCount()); // 2 const anonymous = User.createAnonymous(); console.log(anonymous.name); // 'Anonymous' // 实例无法访问静态成员 // user1.count; // Error
💡
静态 vs 实例

静态成员属于类本身,通过类名访问;实例成员属于对象实例,通过 this 或对象访问。

💻 实际应用

// 单例模式 class Database { private static instance: Database; private constructor() {} // 私有构造函数 static getInstance(): Database { if (!Database.instance) { Database.instance = new Database(); } return Database.instance; } } const db1 = Database.getInstance(); const db2 = Database.getInstance(); console.log(db1 === db2); // true // 工具类 class MathUtils { static PI = 3.14159265; static square(n: number): number { return n * n; } static clamp(value: number, min: number, max: number): number { return Math.max(min, Math.min(max, value)); } } console.log(MathUtils.PI); // 3.14159265 console.log(MathUtils.square(5)); // 25 console.log(MathUtils.clamp(10, 0, 5)); // 5

📝 本节小结

  • • static 定义静态成员
  • • 静态成员通过类名访问
  • • 静态方法中无法使用 this
  • • 适合工具方法和单例模式