📜  typescript 内部类 - TypeScript (1)

📅  最后修改于: 2023-12-03 15:20:43.217000             🧑  作者: Mango

TypeScript 内部类

在 TypeScript 中,内部类是在另一个类的内部定义的类。内部类可以访问其外部类中的属性和方法,同时也可以使用外部类实例化内部类。

定义内部类

内部类的定义可以直接放在外部类的代码块内部,且不需要使用额外的关键字声明。

class OuterClass {
  outerProperty: string;

  constructor(outerProperty: string) {
    this.outerProperty = outerProperty;
  }

  showInnerClass(): void {
    const innerClass = new InnerClass("Inner Property");
    innerClass.innerMethod();
  }

  class InnerClass {
    innerProperty: string;

    constructor(innerProperty: string) {
      this.innerProperty = innerProperty;
    }

    innerMethod(): void {
      console.log(`Inner Property: ${this.innerProperty}`);
      console.log(`Outer Property: ${this.outerProperty}`);
    }
  }
}

在上面的例子中,我们定义了一个 OuterClass 外部类,并在其中定义了一个 InnerClass 内部类。InnerClass 可以访问 OuterClass 中的 outerProperty 属性。

创建内部类实例

要创建内部类的实例,我们需要先创建外部类的实例,然后使用外部类实例来实例化内部类。

const outerObject = new OuterClass("Outer Property");
outerObject.showInnerClass();

在上面的例子中,我们创建了一个 OuterClass 的实例 outerObject,并调用了 showInnerClass 方法,该方法会实例化 InnerClass 并调用 innerMethod 方法。

注意事项
  • 内部类可以访问外部类的私有成员,但外部类无法访问内部类的私有成员,这是因为内部类具有更高的访问权限。
  • 外部类实例不会自动成为内部类的作用域,需要通过内部类的构造函数显式传递外部类实例。

这就是 TypeScript 中内部类的基本概念和用法。通过使用内部类,我们可以更好地组织和封装代码,提高可读性和可维护性。

注意:内部类在 JavaScript 中是一个较新的特性,在旧版浏览器中可能不被支持。在使用内部类时,请确保目标环境支持该特性。