返回
TypeScript中Class类使用指南
前端
2023-09-16 17:25:34
TypeScript中Class类使用
在TypeScript中,Class是一个构造函数,它可以用来创建一个对象实例。Class可以具有属性和方法,属性是对象的特征,方法是对象的函数。
为了定义一个Class,我们需要使用class,然后跟上Class的名称。例如,以下代码定义了一个名为"Person"的Class:
class Person {
name: string;
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
speak() {
console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
}
}
我们也可以使用继承来创建子Class。子Class继承了父Class的所有属性和方法,并且还可以添加自己的属性和方法。例如,以下代码定义了一个名为"Student"的子Class,它继承了"Person" Class:
class Student extends Person {
studentId: number;
constructor(name: string, age: number, studentId: number) {
super(name, age);
this.studentId = studentId;
}
study() {
console.log(`I am studying.`);
}
}
多态是指对象能够根据其类型执行不同的操作。例如,如果我们有一个"Animal" Class,它具有一个名为"speak()"的方法。那么,我们可以创建一个"Dog" Class和一个"Cat" Class,它们都继承了"Animal" Class。然后,我们可以使用相同的"speak()"方法来让狗和猫发出不同的声音。
class Animal {
speak() {
console.log(`I am an animal.`);
}
}
class Dog extends Animal {
speak() {
console.log(`Woof!`);
}
}
class Cat extends Animal {
speak() {
console.log(`Meow!`);
}
}
const dog = new Dog();
const cat = new Cat();
dog.speak(); // 输出:Woof!
cat.speak(); // 输出:Meow!
封装是指将对象的属性和方法隐藏起来,只对外暴露必要的接口。这可以提高代码的可维护性和安全性。例如,以下代码将"Person" Class的属性和方法都设置为私有的,然后通过"get"和"set"方法来访问和修改这些属性:
class Person {
private name: string;
private age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
getName(): string {
return this.name;
}
setName(name: string) {
this.name = name;
}
getAge(): number {
return this.age;
}
setAge(age: number) {
this.age = age;
}
}
const person = new Person("John Doe", 30);
console.log(person.getName()); // 输出:John Doe
console.log(person.getAge()); // 输出:30
person.setName("Jane Doe");
person.setAge(31);
console.log(person.getName()); // 输出:Jane Doe
console.log(person.getAge()); // 输出:31
Class类是TypeScript中面向对象编程的基础,它允许我们创建对象并对对象进行操作。通过使用继承、多态和封装,我们可以创建更加复杂的应用程序。