TypeScript 是一种超集于 JavaScript 的语言,它在 JavaScript 的基础上添加了静态类型检查和面向对象编程(OOP)的特性。在本文中,将学习如何在 TypeScript 中定义类和创建类的实例。
在 TypeScript 中,可以使用面向对象编程的概念来创建类。就像 C# 和其他面向对象编程语言一样,可以使用 class
关键字来定义一个类。让考虑以下示例:
class Person {
// 属性
firstName: string;
lastName: string;
// 默认构造函数
constructor() {
}
// 参数化构造函数
constructor(fName: string, lName: string) {
this.firstName = fName;
this.lastName = lName;
}
// 方法
getFullName(): string {
return `${this.firstName} ${this.lastName}`;
}
}
在上面的示例中,Person
类有四个成员:两个属性(firstName
, lastName
),两个类构造函数(constructor
)和一个方法(getFullName
)。要访问类的成员,可以使用 this
操作符。例如,this.firstName
,this.getFullName()
等。
默认情况下,TypeScript 类中的所有成员都是 public
的。这等同于使用 public
访问修饰符标记成员为 public
。上述类可以按如下方式重写,明确标记成员为 public
:
class Person {
// 属性
public firstName: string;
public lastName: string;
// 默认构造函数
constructor() {
}
// 构造函数
public constructor(fName: string, lName: string) {
this.firstName = fName;
this.lastName = lName;
}
// 方法
public getFullName(): string {
return `${this.firstName} ${this.lastName}`;
}
}
一个类可以有两种类型的构造函数:默认构造函数和参数化构造函数。在上面的示例中,第一个构造函数是默认构造函数,它不接受任何参数。第二个是参数化构造函数,它接受一个或多个参数值(在例子中,它接受两个输入):
// 默认构造函数
constructor() {
}
// 参数化构造函数
public constructor(fName: string, lName: string) {
this.firstName = fName;
this.lastName = lName;
}
在上面的示例中,首先定义了属性,然后使用参数化构造函数传递值,然后填充这些属性。TypeScript 支持自动属性创建。如果将构造函数参数定义为 public
,TypeScript将为完成其余的工作。
考虑以下示例,展示了如何使用参数化构造函数定义属性:
class Person {
// 参数化构造函数
constructor(public firstName: string, public lastName: string) {
}
// 方法
getFullName(): string {
return `${this.firstName} ${this.lastName}`;
}
}
let person: Person = new Person("Kunal", "Chowdhury");
console.log(person.getFullName());
// 另一种方式
let person = new Person("Kunal", "Chowdhury");
console.log(person.getFullName());