【问题标题】:Define new method in typescript class through jsdoc通过jsdoc在typescript类中定义新方法
【发布时间】:2019-04-25 06:03:26
【问题描述】:

我正在尝试在 typescript 中使用“mixins”设计模式。问题是 webpack 不会转译源代码,因为我使用的是在 mixins 而不是在主类中声明的方法。

例如,如果我有 mixin

class TestMixin {
    test(): void {
        console.log('test');
    }
}

申请“Main”类并尝试使用它:

const main = new Main();
main.test();

应用 mixins 后,webpacks 停止并出现错误: “类型上不存在属性'test'”

我知道在 PHP 中,您使用 phpdoc 块来定义不存在的属性或方法(并且会调用魔术方法),我想也许它也可以使用 JSdoc 在 TYpescript 中完成。

几天前我在某个地方发现了一个链接,如果我没记错的话

/**
 * @function Main~test
 */

当时它似乎可以工作(至少对于我的 IDE,我目前没有尝试构建代码),但是当我尝试知道它不起作用(对于 webpack 和我的 IDE 都没有)并且我不记得我第一次在哪里找到它。

有人知道如何告诉 IDE 和编译器动态定义的属性存在于一个类上吗?

【问题讨论】:

  • 您如何将TestMixin 应用于Main 的定义?这是最有可能出现问题的代码部分:-)

标签: typescript jsdoc


【解决方案1】:

据我所知,TypeScript(以及与此相关的 JavaScript)不允许通过添加 jsdoc cmets 来使用魔法方法。

查看关于 mixins 的 TypeScript 文档:https://www.typescriptlang.org/docs/handbook/mixins.html

我的猜测是您应该将 Main 更改为 class Main implements TestMixin

我希望这会有所帮助。

【讨论】:

  • 我已经阅读了有关 mixins 的文档,但是在他们的示例中,他们需要重新定义每种方法,这(我发现)有点难以承受。而且我很确定我们可以用 JSDoc 定义“魔术”方法,因为我已经对其进行了测试(但由于一些问题我失去了测试)
  • 我没有听说过为此目的的 JSDoc,并且(在快速搜索期间)找不到任何关于它的信息。但相反,您可以尝试来自此线程的关于类似问题的建议:stackoverflow.com/a/41038997/6004946
猜你喜欢
  • 2021-05-18
  • 1970-01-01
  • 2021-04-12
  • 2021-06-19
  • 1970-01-01
  • 2022-01-05
  • 1970-01-01
  • 2018-03-14
  • 1970-01-01
相关资源
最近更新 更多