返回
TypeScript知识点汇总(三):类(Class)详解
前端
2024-01-17 08:57:25
简介
TypeScript中的类(Class)是用于创建对象的模板,它封装了数据(属性)和行为(方法)。类允许我们将相关的属性和方法组织在一起,从而提高代码的可重用性和可维护性。
类定义
TypeScript中类定义使用class
,其基本语法如下:
class ClassName {
// 属性
property: type;
// 构造函数
constructor(args: type) {}
// 方法
methodName(args: type): type {}
}
属性
属性表示类中的数据。它们可以在类定义中声明,并使用.
运算符访问。
class Person {
name: string;
age: number;
}
const person = new Person();
person.name = "John Doe";
构造函数
构造函数是在创建类实例时调用的特殊方法。它用于初始化类的属性。
class Person {
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
}
const person = new Person("John Doe", 30);
方法
方法表示类中的行为。它们可以从类实例中调用,并使用.
运算符访问。
class Person {
greet(): void {
console.log(`Hello, my name is ${this.name}`);
}
}
const person = new Person();
person.greet(); // 输出: Hello, my name is John Doe
继承
继承允许一个类(派生类)从另一个类(基类)继承属性和方法。
class Animal {
name: string;
constructor(name: string) {
this.name = name;
}
speak(): void {
console.log(`I am ${this.name}`);
}
}
class Dog extends Animal {
constructor(name: string) {
super(name); // 调用基类构造函数
}
bark(): void {
console.log(`Woof! My name is ${this.name}`);
}
}
const dog = new Dog("Buddy");
dog.speak(); // 输出: I am Buddy
dog.bark(); // 输出: Woof! My name is Buddy
可访问性修饰符
可访问性修饰符用于控制属性和方法的可见性:
public
:在类内、子类和类外均可访问。protected
:在类内和子类中可访问。private
:仅在类内可访问。
抽象类和接口
- 抽象类 :定义了方法签名,但没有提供实现。派生类必须实现这些方法。
- 接口 :只包含方法签名,不包含任何实现。类可以通过实现接口来获得接口中的方法。
泛型
泛型允许创建可用于不同类型数据的类和方法。
class Queue<T> {
private data: T[] = [];
enqueue(item: T): void {
this.data.push(item);
}
dequeue(): T | undefined {
return this.data.shift();
}
}
const numberQueue = new Queue<number>();
numberQueue.enqueue(1);
numberQueue.enqueue(2);
const stringQueue = new Queue<string>();
stringQueue.enqueue("Hello");
stringQueue.enqueue("World");
常见用法
- 面向对象编程 :组织和管理代码,提高代码的可重用性和可维护性。
- 数据建模 :创建表示现实世界实体的类,如用户、产品和订单。
- 抽象复杂性 :通过继承和多态性隐藏实现细节,使代码更容易理解和维护。
总结
类是TypeScript中组织和管理相关数据和行为的关键概念。它们允许开发人员创建可重用、可维护和易于扩展的代码。了解类及其特性对于构建健壮和可扩展的TypeScript应用程序至关重要。