📅  最后修改于: 2023-12-03 15:05:39.979000             🧑  作者: Mango
TypeScript 是一种静态类型检查的 JavaScript 超集,它为开发者提供了强大的工具来增强 JavaScript 的开发能力,其中包括了类的特性。TypeScript 的类是基于 ES6 类的扩展,并且为其添加了很多有用的特性。
我们可以使用 class 关键字来创建一个类。定义类时,我们可以指定类名以及使用花括号包含类的内容。
class Animal {
name: string;
constructor(name: string) {
this.name = name;
}
sayName() {
console.log(`My name is ${this.name}`);
}
}
上面的代码定义了一个名为 Animal
的类,并定义了一个名为 sayName
的方法。这个方法用来输出动物的名字。constructor
方法用来初始化一个实例对象的实例变量,这里我们把名字作为参数传入,并把它保存在实例变量 name
中。
TypeScript 支持面向对象编程中的继承。我们可以用 extends
关键字来继承一个现有的类,并添加或修改其中的方法或属性。
class Dog extends Animal {
bark() {
console.log("Woof! Woof!");
}
}
上面的代码定义了一个名为 Dog
的类,它继承自 Animal
类。Dog
类添加了一个名为 bark
的方法,用来输出“Woof! Woof!”的叫声。
TypeScript 提供了多种访问修饰符,用来控制类中的成员的可访问性。这些访问修饰符包括 public
、private
和 protected
。
public
:默认的访问修饰符,可以被任意对象访问。private
:只能在类内部访问。protected
:可以被类及其子类访问。class Person {
public name: string;
private age: number;
protected gender: string;
constructor(name: string, age: number, gender: string) {
this.name = name;
this.age = age;
this.gender = gender;
}
sayName() {
console.log(`My name is ${this.name}`);
}
sayAge() {
console.log(`I am ${this.age} years old`);
}
}
class Girl extends Person {
constructor(name: string, age: number) {
super(name, age, "Female");
}
sayGender() {
console.log(`My gender is ${this.gender}`);
}
}
上面的代码定义了一个名为 Person
的类,其中包含了三个实例变量:name
、age
和 gender
。name
的访问修饰符为 public
,可以被任意对象访问;age
的访问修饰符为 private
,只能在类内部访问;gender
的访问修饰符为 protected
,可以被类及其子类访问。还定义了两个方法:sayName
和 sayAge
,用来输出名字和年龄。
Girl
类继承自 Person
类,并覆盖了 gender
的值。它还定义了一个 sayGender
方法,用来输出性别。
TypeScript 中的只读属性用来表示一个属性只能在构造函数中被赋值一次。我们可以通过在变量名之前加上 readonly
关键字来定义一个只读属性。
class Person {
readonly id: number;
name: string;
constructor(id: number, name: string) {
this.id = id;
this.name = name;
}
}
上面的代码定义了一个名为 Person
的类,其中包含了一个只读属性 id
和一个实例变量 name
。id
只能在构造函数中被赋值一次,任何其他情况下都不能被修改。
TypeScript 中的静态属性用来表示一个类的属性,而不是它的实例的属性。我们可以通过在变量名之前加上 static
关键字来定义一个静态属性。
class Person {
static count: number = 0;
constructor() {
Person.count++;
}
static getCount() {
return Person.count;
}
}
上面的代码定义了一个名为 Person
的类,其中包含了一个静态属性 count
和一个构造函数。count
用来记录类被实例化的次数,每当一个新的实例被创建时,它的值就会增加。getCount
方法用来返回 count
的值。
TypeScript 的类提供了很多有用的特性,包括继承、访问修饰符、只读属性和静态属性等。这些特性让我们可以更加方便地进行面向对象编程,并增强了 JavaScript 的开发能力。