Static Properties and Class Usage: Object-Oriented Encapsulation Strategy

In TypeScript, static properties are class-level features that differ from instance properties; they are shared across all instances. Declared using the static keyword, static properties can be accessed directly through the class name without instantiating an object. For example:

class Animal {  
  static numberOfSpecies = 0;  
  static greet() {  
    console.log("Hello from static method!");  
  }  
}  
Animal.greet(); // Call static method  
console.log(Animal.numberOfSpecies); // Access static property  

Encapsulation Strategy for Classes

The encapsulation strategy for classes controls the visibility of properties and methods via access modifiers (public, private, protected), ensuring data security.

  • public: Properties or methods accessible from anywhere, suitable for public interfaces.
  • private: Accessible only within the class, preventing external direct modification; commonly used for data encapsulation.
  • protected: Accessible by the class and its subclasses, used to restrict subclass access permissions.
    The core of the encapsulation strategy involves exposing interfaces through methods, such as using getter and setter to control property read/write operations:
class Person {  
  private age: number;  
  getAge(): number {  
    return this.age;  
  }  
  setAge(value: number) {  
    if (value > 0) {  
      this.age = value;  
    }  
  }  
}  
const p = new Person();  
p.setAge(25); // Modify age  
console.log(p.getAge()); // 25  

Integration of Static Properties and Classes

Combining static properties with class encapsulation strategies enables more efficient modular design. For example:

  • Static methods: Class-level methods that can be called directly, commonly used for factory methods or utility functions.
  • Static properties: Shared state to avoid redundant initialization, improving performance.
  • Combined usage: Storing global state via static properties while implementing complex logic through class methods.
class Calculator {  
  static PI = 3.14159;  
  static add(a: number, b: number): number {  
    return a + b;  
  }  
}  
console.log(Calculator.PI); // 3.14159  
console.log(Calculator.add(10, 20)); // 30  

Practical Application Scenarios

In actual development, static properties and class encapsulation strategies are frequently used for:

  1. Configuration Management: Storing global configuration via static properties to avoid hardcoding.
  2. Utility Classes: Creating independent utility classes (e.g., DateUtils), implementing functionality through static methods.
  3. Data Sharing: Sharing state across multiple components, achieving low coupling through static properties.
    By reasonably utilizing static properties and encapsulation strategies, code maintainability, scalability, and performance can be enhanced.