TypeScript 学习笔记:深度探索 TypeScript 类的世界
2024-02-12 22:33:20
TypeScript 学习之旅:第九站 - 类的世界
在 TypeScript 进阶之旅中,我们已经掌握了变量、数据类型、函数和数组的基本知识,接下来,我们将踏入面向对象编程(OOP)的领域,从今天开始,我们将深入学习 TypeScript 中的类。类是 TypeScript 面向对象编程的基础,也是一个重要的概念,它允许我们创建对象,并将对象组织成更易于管理和维护的结构。
一、严格属性初始化
在 TypeScript 中,我们可以在声明类属性时指定一个初始值,这称为严格属性初始化。当 --strictPropertyInitialization
参数开启时,class 的属性必须在构造函数中定义初始值。例如:
class Person {
name: string; // 错误:属性 "name" 必须在构造函数中初始化
}
为了解决这个问题,我们可以在属性后面添加 !
来关闭提示,如下所示:
class Person {
name!: string; // 关闭严格属性初始化提示
}
不过,如果我们在构造函数中没有为属性指定初始值,TypeScript 仍然会给出错误提示,这是因为 TypeScript 希望我们在使用属性之前始终确保它具有定义的值。
二、构造函数重载
构造函数是类的一个特殊方法,它在创建对象时被调用。在 TypeScript 中,我们可以为类定义多个构造函数,这称为构造函数重载。例如:
class Person {
constructor(name: string) {
this.name = name;
}
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
}
在上面的例子中,我们为 Person
类定义了两个构造函数,第一个构造函数只接受一个参数 name
,第二个构造函数接受两个参数 name
和 age
。当我们创建 Person
类的对象时,我们可以根据需要选择使用哪个构造函数。
三、类属性
类属性是类的成员变量,它们可以在类中声明并初始化。类属性可以分为两类:实例属性和静态属性。实例属性是属于每个对象实例的属性,而静态属性是属于整个类的属性。
1. 实例属性
实例属性在构造函数中声明并初始化,它们只能在对象实例中访问。例如:
class Person {
constructor(public name: string, public age: number) {}
}
const person1 = new Person('John', 30);
console.log(person1.name); // 输出:John
在上面的例子中,name
和 age
是 Person
类的实例属性。我们可以在构造函数中为它们指定初始值,并在对象实例中访问它们。
2. 静态属性
静态属性在类本身声明并初始化,它们可以被所有对象实例访问。例如:
class Person {
static species = 'Homo sapiens';
constructor(public name: string, public age: number) {}
}
console.log(Person.species); // 输出:Homo sapiens
在上面的例子中,species
是 Person
类的静态属性。我们可以在类本身声明并初始化它,并可以使用类名直接访问它。
四、对象实例
对象实例是类的具体实现,它包含了类属性的值。我们可以在 TypeScript 中使用 new
创建对象实例。例如:
class Person {
constructor(public name: string, public age: number) {}
}
const person1 = new Person('John', 30);
const person2 = new Person('Mary', 25);
在上面的例子中,person1
和 person2
是 Person
类的两个对象实例。我们可以使用 new
关键字创建它们,并在括号中传递构造函数的参数。
结束语
在本文中,我们对 TypeScript 中的类进行了详细的学习,包括严格属性初始化、构造函数重载、类属性和对象实例等概念。通过这些知识,我们可以创建更强大的 TypeScript 程序,并更好地组织和管理我们的代码。