返回

TypeScript 从听说到入门(下篇)

前端

TypeScript 是一种强大的 JavaScript 扩展,集成了静态类型、面向对象编程和很多其他现代特性。它能够提供卓越的开发体验,有利于提高代码质量,减少错误。

很多开发者对 TypeScript 的评价是:一开始没觉得有什么,但越用越离不开。它能够快速上手,基本能力的获取比较简单。不过,若想深入使用 TypeScript,掌握它的特性和玩法,就需要花费一番功夫了。本篇将涵盖面向对象编程、访问控制修饰符、类和接口、泛型四个方面。

我们先来聊聊面向对象编程。面向对象编程是一种编程范式,它把对象和行为封装起来,然后通过这些对象和行为之间的交互来实现程序的逻辑。在 TypeScript 中,可以通过创建一个 class 来定义一个对象。比如:

class Person {
  constructor(public name: string, public age: number) {}

  greet() {
    console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
  }
}

这个类定义了一个 Person 对象,它有两个属性:nameage。它还定义了一个 greet 方法,该方法会在被调用时输出一条信息。

接下来,我们来讨论一下访问控制修饰符。TypeScript 为访问控制提供了三个修饰符:publicprotectedprivatepublic 修饰符表示该成员对所有人都是可见的,protected 修饰符表示该成员只能被该类及其派生类访问,private 修饰符表示该成员只能被该类访问。

访问控制修饰符可以提高代码的安全性和可维护性。例如,如果我们想创建一个只允许该类及其派生类访问的成员,就可以使用 protected 修饰符。这样,我们就能够在该类及其派生类中使用该成员,而在其他类中则不能使用该成员。

接着,我们来讨论一下类和接口。类是一种用来创建对象的模板,它定义了对象的属性和方法。接口是一种定义对象的行为的契约,它定义了对象必须具有的方法和属性。

TypeScript 中的类和接口是相互补充的。我们可以使用类来创建对象,然后使用接口来定义这些对象必须具有的行为。这样做的好处是,我们可以轻松地重用代码,因为我们可以使用同一个接口来定义多个类。

最后,我们来讨论一下泛型。泛型是一种定义参数化类型的方法。我们可以使用泛型来创建可以处理不同类型数据的类和接口。

TypeScript 中的泛型非常强大,它可以用于各种场景。例如,我们可以使用泛型来创建一个可以处理任何类型数据的数组:

class Array<T> {
  private data: T[];

  constructor() {
    this.data = [];
  }

  add(item: T) {
    this.data.push(item);
  }

  get(index: number): T {
    return this.data[index];
  }
}

这个数组可以存储任何类型的数据。我们可以通过指定数组的泛型参数来指定数组中存储的数据类型。例如,我们可以创建一个存储字符串的数组:

const stringArray = new Array<string>();

也可以创建一个存储数字的数组:

const numberArray = new Array<number>();