TypeScript 是一种由微软开发的 JavaScript 超集,它给 JavaScript 带来了类型检查和更好的面向对象编程能力。在 TypeScript 中,class 是一种重要的语言特性,它能让我们更方便地使用面向对象的编程方式。本文将介绍 TypeScript 中 class 的一些用法,包括类的定义、继承、修饰符、抽象类和接口等。
类的定义
在 TypeScript 中,我们可以使用 class 关键字来定义一个类。类的定义包括类名、类的属性和方法。
-- -------------------- ---- ------- ----- ------ - ----- ------- ----------------- ------- - --------- - ----- - ---------- - ------------------- --- ---------------- - -
上面的代码定义了一个 Animal 类,它有一个 name 属性和一个 sayHello 方法。在构造函数中,我们通过 this 关键字来初始化 name 属性。在 sayHello 方法中,我们使用模板字符串来输出一句问候语。注意,类的方法可以直接访问类的属性。
继承
在 TypeScript 中,我们可以使用 extends 关键字来实现类的继承。子类继承了父类的属性和方法,并可以在此基础上添加自己的属性和方法。
class Cat extends Animal { constructor(name: string) { super(name); } meow() { console.log(`${this.name} meows.`); } }
上面的代码定义了一个 Cat 类,它继承了 Animal 类。在 Cat 类的构造函数中,我们调用了父类的构造函数,并传入了 name 参数。在 meow 方法中,我们输出了一句猫叫声。注意,子类的构造函数必须调用父类的构造函数,否则会出现编译错误。
修饰符
在 TypeScript 中,我们可以使用修饰符来控制类的属性和方法的访问权限。常用的修饰符包括 public、private 和 protected。
- public:默认修饰符,表示属性和方法可以在类的内部和外部访问。
- private:表示属性和方法只能在类的内部访问。
- protected:表示属性和方法可以在类的内部和子类中访问。
-- -------------------- ---- ------- ----- ------ - ------ ----- ------- ------- ---- ------- --------- ------- ------- ----------------- ------- ---- ------- ------- ------- - --------- - ----- -------- - ---- ----------- - ------- - ---------- - ------------------- --- ---------------- - ------- -------- - ---------------- ----------- ----- ------- - --------- ----------- - --------------- ------ -- ------------------ - - ----- ------- ------- ------ - ----------------- ------- ---- ------- ------- ------- - ----------- ---- -------- - ----------- - --------------- ---- -- ---------------- -------------- ----------------- - -
上面的代码定义了一个 Person 类和一个 Student 类,其中 Person 类有一个 public 的 name 属性、一个 private 的 age 属性和一个 protected 的 gender 属性。Person 类有一个 public 的 sayHello 方法、一个 private 的 sayAge 方法和一个 protected 的 sayGender 方法。Student 类继承了 Person 类,并在此基础上添加了一个 introduce 方法,该方法可以访问父类的 protected 属性和方法。
抽象类
在 TypeScript 中,我们可以使用 abstract 关键字定义抽象类。抽象类不能被实例化,只能被继承。抽象类可以包含抽象方法,抽象方法没有实现,必须在子类中被实现。
-- -------------------- ---- ------- -------- ----- ----- - -------- ---------- ------- - ----- ------ ------- ----- - ------- ------- ------------------- ------- - -------- ----------- - ------- - --------- - ------ ------- - ----------- - ------------ - - ----- --------- ------- ----- - ------ ------- ------- ------- ------------------ ------- ------- ------- - -------- ---------- - ------ ----------- - ------- - --------- - ------ ---------- - ------------ - -
上面的代码定义了一个 Shape 抽象类和两个实现类 Circle 和 Rectangle。Shape 类有一个抽象方法 getArea,该方法没有实现。Circle 类和 Rectangle 类继承了 Shape 类,并实现了 getArea 方法。
接口
在 TypeScript 中,我们可以使用接口来描述对象的形状。接口可以包含属性、方法、索引签名和函数签名等成员。
-- -------------------- ---- ------- --------- ------ - ----- ------- ---- ------- ----------- ----- - ----- ------- ---------- ------ - ----- ------- ---- ------- ----------------- ------- ---- ------- - --------- - ----- -------- - ---- - ---------- - ------------------- --- ---------------- - -
上面的代码定义了一个 Person 接口和一个实现类 Student。Person 接口包含 name 属性、age 属性和 sayHello 方法。Student 类实现了 Person 接口,并提供了 name 属性、age 属性和 sayHello 方法的实现。
总结
本文介绍了 TypeScript 中 class 的一些用法,包括类的定义、继承、修饰符、抽象类和接口等。通过学习这些内容,我们可以更好地使用 TypeScript 进行面向对象编程。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/658eb191eb4cecbf2d48a9ea