TypeScript 是 JavaScript 的一个超集,它添加了可选的静态类型和基于类的面向对象编程。在 TypeScript 中,类是一种模板,用于创建对象。通过类,你可以封装对象的属性(数据)和方法(函数)。TypeScript 的类与 JavaScript ES6+ 中的类非常相似,但增加了类型安全特性。
定义一个类
在 TypeScript 中,你可以使用 class
关键字来定义一个类。以下是一个简单的例子:
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
let greeter = new Greeter("world");
console.log(greeter.greet()); // 输出: Hello, world
在这个例子中,Greeter
是一个类,它有一个属性 greeting
和一个构造函数,构造函数接收一个字符串参数并将其赋值给 greeting
属性。greet
方法是一个实例方法,它返回一个包含问候语的字符串。
访问修饰符
TypeScript 支持三种访问修饰符:public
、protected
和 private
,它们用于控制类成员(属性和方法)的访问权限。
public
(默认):任何地方都可以访问。protected
:只能被类本身及其子类访问。private
:只能被类本身访问。
继承
TypeScript 支持类的继承,允许你基于一个类来创建另一个类。子类继承父类的属性和方法,并可以添加新的属性和方法或覆盖父类的方法。
class Animal {
name: string;
constructor(theName: string) { this.name = theName; }
move(distanceInMeters: number = 0) {
console.log(`${this.name} moved ${distanceInMeters}m.`);
}
}
class Dog extends Animal {
bark() {
console.log(`${this.name} says Woof!`);
}
}
const myDog = new Dog("Buddy");
myDog.move(5);
myDog.bark(); // 输出: Buddy moved 5m. 和 Buddy says Woof!
在这个例子中,Dog
类继承自 Animal
类,并添加了一个新的 bark
方法。
静态属性和方法
静态成员(属性和方法)属于类本身,而不是类的实例。你不需要创建类的实例就可以访问静态成员。
class MathUtils {
static sum(a: number, b: number): number {
return a + b;
}
}
console.log(MathUtils.sum(1, 2)); // 输出: 3
在这个例子中,sum
是一个静态方法,可以直接通过类名 MathUtils
调用,而不需要创建类的实例。
通过这些基本概念,你可以开始使用 TypeScript 编写面向对象的程序了。