首页 > 解决方案 > 在从属模块的构造函数中传递 `this` 值 - 键入

问题描述

我是 TypeScript 的新手,我尝试将现有的代码从 JS 升级到 TS。如何解决这个问题?因为现在它遇到了循环依赖问题。

目录:

Main.ts
Helper.ts

主要模块:

import Helper from "./Helper"

export default class Main {
    helper:   Helper

    constructor() {
        this.helper = new Helper(this);
    }
}

辅助(从属)模块:

import Main from "./Main"

export default class Helper {
    main: Main;

    constructor(main: Main) {
        this.main = main;
    }
}

标签: javascripttypescriptcircular-dependency

解决方案


事实上,你正在做一些“循环”的事情。您将需要更多地考虑类行为以及它们之间的交互。我强烈建议你开始extend类,例如你可以从你的 Main 开始创建子类:

你的主要课程:

class Main {
  changeSomething(str) {
    console.log(str);
  }
}

你的助手类:

import Main from "./Main";

class Helper extends Main {
  constructor() {
    super(); // Now you will have access to props and methods from Main class
  }

  launch() {
    this.changeSomething('wo!'); // Calling a parent method
  }
}

推荐阅读