【问题标题】:Pass `this` value in constructor of subordinated module - typing在从属模块的构造函数中传递 `this` 值 - 键入
【发布时间】:2021-02-20 14:12:25
【问题描述】:

我是 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;
    }
}

【问题讨论】:

  • 创建下一个类,例如 MainWithHelper,它可以作为这两个类的依赖项,但您必须从这些类中删除依赖项

标签: javascript typescript circular-dependency


【解决方案1】:

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

你的 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
  }
}

【讨论】:

  • 有时方法/道具名称可能会发生冲突,基本上我想将主类功能拆分为一些适用于主类的子类。
猜你喜欢
  • 2016-03-29
  • 2011-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多