主题
类与面向对象
TypeScript 在 JavaScript 基础上增强了面向对象编程能力,提供了完整的类支持和类型检查。
类的定义
使用 class
定义类并添加构造函数和方法:
ts
class Person {
name: string;
constructor(name: string) {
this.name = name;
}
greet(): void {
console.log(`Hello, I'm ${this.name}`);
}
}
继承与 super
通过 extends
关键字实现继承,子类可调用 super()
使用父类构造器:
ts
class Student extends Person {
grade: number;
constructor(name: string, grade: number) {
super(name);
this.grade = grade;
}
study() {
console.log(`${this.name} is studying in grade ${this.grade}`);
}
}
访问修饰符
TypeScript 支持以下访问修饰符:
public
:默认,任何地方都可访问private
:只能在类内部访问protected
:只能在类内部和子类中访问
ts
class Animal {
protected name: string;
constructor(name: string) {
this.name = name;
}
}
class Dog extends Animal {
bark() {
console.log(`${this.name} barks`);
}
}
接口与类的结合使用
类可以实现接口,以强制类具有某些结构:
ts
interface CanSpeak {
speak(): void;
}
class Human implements CanSpeak {
speak() {
console.log("Speaking...");
}
}
抽象类与多态
抽象类不能实例化,必须由子类实现抽象方法:
ts
abstract class Shape {
abstract area(): number;
}
class Circle extends Shape {
constructor(public radius: number) {
super();
}
area(): number {
return Math.PI * this.radius * this.radius;
}
}
多态性允许不同的子类以不同方式实现相同的方法,从而统一调用接口。
ts
const shape: Shape = new Circle(5);
console.log(shape.area());
通过类、继承、抽象等机制,TypeScript 提供了强大的 OOP 支持,适合构建结构清晰、可维护的大型应用。