在打字稿中分离的文件中实现方法类

Implement methods class in separted files in typescript

提问人:yuccai 提问时间:11/11/2020 最后编辑:yuccai 更新时间:11/11/2020 访问量:55

问:

我尝试在文件中定义一个类,并在单独的文件中实现其方法,以便使用延迟加载。

例如,这里是主类。

export default class Foo {

  private bar() {
    console.log("private bar");
  }

  public baz() {
    console.log("public baz");
  }
  
  public async qux(): Promise<void> {
    const { default: qux } = await import("./qux");
    return qux.call(this);
  }

}

以下是“./qux.ts”的内容:

export default function qux() {
  this.bar()
  this.baz();
}

我在这个文件中遇到的第一个错误如下:

“'this'隐式具有类型'any',因为它没有类型 注解”

我还尝试在我的tsconfig中设置。这消除了我以前的错误,但我可以访问私有的酒吧方法,我不想要这个。"noImplicitThis": false


我尝试了其他实现,删除了函数绑定并改用类型化参数:

export default class Foo {

  private bar() {
    console.log("private bar");
  }

  public baz() {
    console.log("public baz");
  }
  
  public async qux(): Promise<void> {
    const { default: qux } = await import("./qux");
    return qux(this);
  }

}

以下是“./qux.ts”的内容:

import Foo from "./Foo";

export default function qux(this: Foo) {
  this.bar()
  this.baz();
}

现在错误是:

“物业'酒吧'是私人的,只能在'Foo'类内进入”

我想从类修饰符(公共 - 私有 - 受保护)和延迟加载中受益。我应该使用什么模式?

打字稿 这个 延迟加载

评论


答: 暂无答案