在 TypeScript 中,类(Class)是一种非常重要的概念。它是面向对象编程的基本组成单位,用于描述对象的属性和行为。TypeScript 的类支持了 ECMAScript 6 中引入的类的概念,并且在此基础上增加了类型注解和静态类型检查等特性。本文将详细介绍 TypeScript 类的特性、使用方法以及注意事项。
类的定义
在 TypeScript 中,可以使用 class
关键字来定义一个类。类可以拥有属性和方法,用于描述对象的状态和行为。
下面是一个简单的类的定义示例:
代码语言:typescript复制class Person {
name: string;
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
sayHello() {
console.log(`Hello, my name is ${this.name}. I'm ${this.age} years old.`);
}
}
上面的代码定义了一个名为 Person
的类,该类具有 name
和 age
两个属性,以及一个 sayHello
方法。构造函数用于初始化对象的属性。
类的实例化
在 TypeScript 中,可以使用 new
关键字来实例化一个类,并创建类的对象。
下面是一个类实例化的示例:
代码语言:typescript复制const person = new Person("Alice", 18);
person.sayHello(); // Output: Hello, my name is Alice. I'm 18 years old.
上面的代码创建了一个 Person
类的实例,并调用了 sayHello
方法。
类的继承
在 TypeScript 中,类支持继承的概念。通过继承,一个类可以派生出新的类,并继承父类的属性和方法。
下面是一个类继承的示例:
代码语言:typescript复制class Student extends Person {
studentId: string;
constructor(name: string, age: number, studentId: string) {
super(name, age);
this.studentId = studentId;
}
study() {
console.log(`${this.name} is studying.`);
}
}
上面的代码定义了一个名为 Student
的类,它继承自 Person
类,并且添加了一个 studentId
属性和一个 study
方法。
可以通过以下方式实例化一个继承类的对象:
代码语言:typescript复制const student = new Student("Bob", 20, "123456");
student.sayHello(); // Output: Hello, my name is Bob. I'm 20 years old.
student.study(); // Output: Bob is studying.
上面的代码创建了一个 Student
类的实例,并调用了继承自父类的方法。
类的访问修饰符
在 TypeScript 类中,可以使用访问修饰符来控制属性和方法的访问权限。常用的访问修饰符有三种:public
、private
和 protected
。
public
:公共访问修饰符,属性和方法可以在类的内部和外部被访问,默认为public
。private
:私有访问修饰符,属性和方法只能在类的内部被访问。protected
:受保护的访问修饰符,属性和方法可以在类的内部和继承类中被访问。
下面是一个使用访问修饰符的示例:
代码语言:typescript复制class Person {
private name: string;
protected age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
public sayHello() {
console.log(`Hello, my name is ${this.name}. I'm ${this.age} years old.`);
}
}
const person = new Person("Alice", 18);
person.sayHello(); // Output: Hello, my name is Alice. I'm 18 years old.
console.log(person.name); // Error: Property 'name' is private and only accessible within class 'Person'.
上面的代码中,name
属性被设置为 private
,只能在类的内部被访问。age
属性被设置为 protected
,可以在类的内部和继承类中被访问。
类的静态成员
在 TypeScript 类中,可以定义静态成员,它们属于类本身而不是类的实例。可以使用 static
关键字来定义静态属性和方法。
下面是一个静态成员的示例:
代码语言:typescript复制class MathUtils {
static PI: number = 3.14159;
static calculateCircumference(radius: number): number {
return 2 * MathUtils.PI * radius;
}
}
console.log(MathUtils.PI); // Output: 3.14159
console.log(MathUtils.calculateCircumference(2)); // Output: 12.56636
上面的代码定义了一个 MathUtils
类,其中 PI
是一个静态属性,calculateCircumference
是一个静态方法。可以直接通过类名访问静态成员,无需实例化对象。
总结
本文详细介绍了 TypeScript 类的特性、使用方法以及注意事项。类是面向对象编程的基本组成单位,用于描述对象的属性和行为。在 TypeScript 中,可以使用 class
关键字来定义和实例化类,支持继承、访问修饰符和静态成员等特性。