一、方法
1.简介
在 TypeScript 中,class 是一种支持面向对象编程的核心构造,它允许你定义对象的结构和行为。
2.基本结构
class ClassName {
// 属性
property: type;
// 构造函数
constructor(parameters) {
// ...
}
// 方法
method() {
// ...
}
}
3.属性
公共属性:默认所有属性都是公共的,可以在类的实例外部访问。
私有属性:使用 private 关键词,只能在类的内部访问。
保护属性:使用 protected 关键词,可以在类及其子类中访问。
class Person {
// 公共属性
fullName: string;
// 私有属性
private age: number;
// 保护属性
protected email: string;
constructor(fullName: string, age: number, email: string) {
this.fullName = fullName;
this.age = age;
this.email = email;
}
// 公共方法
introduce() {
console.log(`My name is ${this.fullName} and I am ${this.age} years old.`);
}
// 私有方法
private celebrateBirthday() {
this.age++;
console.log(`Happy ${this.age}rd Birthday!`);
}
// 保护方法
protected updateEmail(newEmail: string) {
this.email = newEmail;
}
}
const person = new Person('Alice', 30, 'alice@example.com');
person.introduce(); // My name is Alice and I am 30 years old.
// person.celebrateBirthday(); // Error: celebrateBirthday is private
// person.updateEmail('newemail@example.com'); // Error: updateEmail is protected
4.构造函数
用于创建和初始化类的一个新实例。
如果不指定构造函数,编译器会提供一个默认的构造函数。
class Car {
make: string;
model: string;
year: number;
// 构造函数
constructor(make: string, model: string, year: number) {
this.make = make;
this.model = model;
this.year = year;
}
}
const myCar = new Car('Toyota', 'Corolla', 2021);
5.方法
类可以包含方法,方法可以访问类的属性。
方法也可以是 private 或 protected,以限制访问范围。
class Calculator {
// 方法
add(a: number, b: number): number {
return a + b;
}
subtract(a: number, b: number): number {
return a - b;
}
}
const calc = new Calculator();
console.log(calc.add(5, 3)); // 8
console.log(calc.subtract(5, 3)); // 2
6.继承
使用 extends 关键字来创建一个类,该类基于另一个类。
子类可以覆盖父类的方法。
class Animal {
move() {
console.log("The animal is moving.");
}
}
class Dog extends Animal {
bark() {
console.log("The dog is barking.");
}
}
const dog = new Dog();
dog.move(); // The animal is moving.
dog.bark(); // The dog is barking.
7.存取器
使用 get 和 set 关键字来创建属性的存取器。
class User {
private _name: string;
constructor(name: string) {
this._name = name;
}
get name(): string {
return this._name;
}
set name(value: string) {
this._name = value;
}
}
const user = new User('Alice');
console.log(user.name); // Alice
user.name = 'Bob';
console.log(user.name); // Bob