如何使用 TypeScript 类(附简单示例)
TypeScript 为 JavaScript 带来了强大的功能,包括类的概念,它允许面向对象编程。类提供了创建对象、封装数据和定义行为的蓝图。本指南将通过简单的示例向您介绍 TypeScript 类的基础知识。
什么是课程?
类是创建具有预定义属性和方法的对象的蓝图。它有助于组织代码、提高可重用性和创建可扩展的应用程序。TypeScript 中的类与其他面向对象编程语言中的类的工作方式类似。
定义基础类
要在 TypeScript 中定义一个类,请使用 class
关键字,后跟类名和一组包含属性和方法的花括号。
基础类示例
下面是一个具有属性和方法的简单 Person
类的示例:
class Person {
name: string;
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
greet(): void {
console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
}
}
const person1 = new Person("Alice", 30);
person1.greet(); // Output: Hello, my name is Alice and I am 30 years old.
在此示例中,Person
类有两个属性:name
和 age
。构造函数方法初始化这些属性,greet
方法输出问候消息。
访问修饰符
TypeScript 提供了三个访问修饰符来控制类成员的可见性:
public
:成员可以从任何地方访问(默认)。private
:成员只能在类内访问。protected
:成员可在类及其子类内访问。
使用访问修饰符
以下是如何在 TypeScript 类中使用访问修饰符的方法:
class Animal {
public name: string;
private age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
public getAge(): number {
return this.age;
}
}
const dog = new Animal("Buddy", 5);
console.log(dog.name); // Output: Buddy
console.log(dog.getAge()); // Output: 5
// console.log(dog.age); // Error: 'age' is private and only accessible within class 'Animal'.
在这个例子中,name
是一个公共属性,可以从类外部访问,而age
是一个私有属性,只能在类内部访问。
TypeScript 中的继承
TypeScript 支持继承,允许一个类从另一个类继承属性和方法。这有助于重用代码并创建类的层次结构。
继承示例
下面是从基类 Animal
继承的类 Dog
的示例:
class Animal {
constructor(public name: string) {}
makeSound(): void {
console.log(`${this.name} makes a sound.`);
}
}
class Dog extends Animal {
constructor(name: string) {
super(name); // Call the constructor of the base class
}
makeSound(): void {
console.log(`${this.name} barks.`);
}
}
const dog = new Dog("Buddy");
dog.makeSound(); // Output: Buddy barks.
在此示例中,Dog
类扩展了 Animal
类并覆盖了 makeSound
方法。
Getters 和 Setters
TypeScript 允许您为属性定义 getter 和 setter,从而提供对类成员的受控访问。
Getters 和 Setters 示例
class Person {
private _name: string;
constructor(name: string) {
this._name = name;
}
get name(): string {
return this._name;
}
set name(newName: string) {
if (newName) {
this._name = newName;
} else {
console.log("Name cannot be empty.");
}
}
}
const person = new Person("Alice");
console.log(person.name); // Output: Alice
person.name = "Bob";
console.log(person.name); // Output: Bob
在此示例中,使用 getter 和 setter 方法访问和修改 name
属性。
结论
TypeScript 类是一种以简洁高效的方式编写面向对象代码的强大方法。它们提供了一种结构化的方式来定义属性、方法、访问修饰符、继承等。通过了解如何使用 TypeScript 类,您可以为应用程序编写更强大且更易于维护的代码。