我正在尝试在打字稿中使用“mixins”设计模式。问题是webpack不会转换源代码,因为我使用的是mixins中声明的方法,而不是主类中的方法。
例如,如果我的我有混合
class TestMixin {
test(): void {
console.log('test');
}
}
在“Main”类上应用并尝试使用它:
const main = new Main();
main.test();
应用mixins后,webpacks停止并显示错误:“属性'测试'在类型上不存在”
我知道在PHP中你使用phpdoc块来定义实际上不存在的属性或方法(并且将调用魔术方法)并且我想也许可以使用JSdoc在TYpescript中完成。
几天前,我找到了某个地方的东西,如果我没记错的话
/**
* @function Main~test
*/
并且当时它似乎工作(至少我的IDE,我现在没有尝试构建代码),但是当我尝试知道它不起作用(既不用于webpack也不用于我的IDE)而且我不能回忆起我第一次发现它的地方。
有人知道如何告诉IDE和转换器一个类上存在动态定义的属性吗?
据我所知,TypeScript(以及相关的JavaScript)不允许通过添加jsdoc注释来实现魔术方法。
看看有关mixins的TypeScript文档:https://www.typescriptlang.org/docs/handbook/mixins.html
我的猜测是你应该将Main改为class Main implements TestMixin
。
我希望这有帮助。