如何在 TypeScript 中定义类?-- 面向初学者的 TypeScript 教程





5.00/5 (3投票s)
如何定义类并实例化类对象
在 TypeScript 教程系列的前一篇文章中(TypeScript 入门),我们学习了 TypeScript 配置文件、变量声明和 基本数据类型。 希望这些内容清晰易懂,能够帮助你理解 TypeScript 的基本概念。
今天,我们将学习如何在 TypeScript 中定义类并实例化类对象。 继续阅读以了解更多信息。
在 TypeScript 中定义类
在 TypeScript 中,你可以使用面向对象编程 (OOP) 的概念并创建类。 就像 C# 和其他面向对象编程语言一样,你可以使用 class
关键字来定义类。 让我们考虑以下示例
class Person {
// properties
firstName: string;
lastName: string;
// default constructor
constructor () {
}
// parameterized constructor
constructor (fName: string, lName: string) {
this.firstName = fName;
this.lastName = lName;
}
// method
getFullName() {
return `${firstName} ${lastName}`;
}
}
在上面的示例中,类 Person
有四个成员:两个属性(firstName
、lastName
)、两个类构造函数(constructor
)和一个方法(getFullName()
)。 要访问类的成员,可以使用 this
运算符。 例如,this.firstName
、this.getFullName()
等。
默认情况下,TypeScript 类中的所有成员都是 public
(公共的)。 这相当于使用 public
访问修饰符显式地将成员标记为 public
。 上面的类可以如下编写,通过显式地将成员标记为 public
。
class Person {
// properties
public firstName: string;
public lastName: string;
// default constructor
constructor () {
}
// constructor
public constructor (fName: string, lName: string) {
this.firstName = fName;
this.lastName = lName;
}
// method
public getFullName() {
return `${firstName} ${lastName}`;
}
}
定义 TypeScript 类的构造函数
一个类可以有两种类型的构造函数:默认构造函数和参数化构造函数。 在上面的示例中,第一个构造函数是默认构造函数,它不接受任何/零个参数。 第二个是参数化构造函数,它接受一个或多个参数值(在我们的例子中,它接受两个输入)。
// default construtor
constructor () {
}
// construtor
public constructor (fName: string, lName: string) {
this.firstName = fName;
this.lastName = lName;
}
在上面的示例中,我们首先定义了属性,然后使用参数化构造函数传递了值,然后填充了这些属性。 TypeScript 支持自动属性创建。 不再遵循所有这些步骤,如果将构造函数参数定义为 public
,TypeScript 将为你完成其余的工作。
考虑以下示例,展示如何使用参数化构造函数定义属性
class Person {
// parameterized construtor
constructor (public firstName: string, public lastName: string) {
}
// method
getFullName() {
return `${firstName} ${lastName}`;
}
}
实例化 TypeScript 类的实例
要创建类的实例并访问其成员,可以使用 new
运算符,就像在 C# 和/或 Java 中创建类实例一样。 以下是创建类实例的两种不同方法
let person: Person = new Person("Kunal", "Chowdhury");
console.log(person.getFullName());
// alternative way
let person = new Person("Kunal", "Chowdhury");
console.log(person.getFullName());