Javascript 如何在TypeScript类中扩展ES6类

Javascript 如何在TypeScript类中扩展ES6类,javascript,typescript,Javascript,Typescript,我有一个用ES6编写的JavaScript类: // MyClass.js export default class MyClass { myfunction() { console.log('myfunction called'); } } 我想用一个TypeScript类扩展这个类: // MyTSClass.ts import MyClass from './MyClass'; class MyTSClass extends MyClass { public ini

我有一个用ES6编写的JavaScript类:

// MyClass.js
export default class MyClass {
  myfunction() {
    console.log('myfunction called');
  }
}
我想用一个TypeScript类扩展这个类:

// MyTSClass.ts
import MyClass from './MyClass';

class MyTSClass extends MyClass {
  public initialize() {
    this.myfunction();
  }
}
这会产生TypeScript编译器错误:

TS2339:类型“MyTSClass”上不存在属性“myfunction”

我的tsconfig中将
esModuleInterop
设置为
true

我试图创建一个声明文件,认为这可能会有所帮助:

// MyClass.d.ts
export = MyClass;

declare class MyClass {
  myfunction: void;
}
这使编译器感到高兴,但在浏览器中生成的代码中,我看到了一些意外情况,并且控制台日志不会打印:

class MyTSClass extends WEBPACK_IMPORTED_MODULE_1__["MyClass"]...

我做错了什么?

从您提供的信息很难判断,但我会从调用
初始化
的任何内容开始。我假设您不是有意使用
构造函数
?在Chrome中,您可以使用
调试器语句在代码中的特定点启动调试器,我认为这比设置断点容易。从那里,您可以逐步浏览代码并查看发生了什么。您还可以对类的实例进行console.log,以检查其原型链,以确保
myfunction
方法存在。

编译器高兴与生成的代码不起作用不一定相关。你已经做了正确的事情来编译它,现在你需要弄清楚为什么你的代码不能工作。从阅读你得到的错误开始,或者如果没有错误,那么先弄清楚它到底在做什么,以及它需要做什么。简言之,你已经解决了一个问题,现在你又遇到了另一个问题,现在这里没有足够的信息来符合重现问题的条件,因为你所说的只是“功能不起作用“。谢谢,我更新了示例,在原始函数中显示了未打印的
console.log
。我没有包括网页包配置,tsconfig等,因为我不知道哪些部分是相关的。我希望我做错了一些很容易被有经验的人识别出来的事情,但是很快就可以花时间来编写一个更完整的示例。你不会实例化这个类并在任何地方使用它。“通过查看X开始调试”不是答案。最好等OP把问题弄清楚,让问题完全可以回答。我很欣赏对否决票的解释,但我认为调试是OP找到答案的方式。最终,如果他学会了调试,他将能够更好地自己找到答案。谢谢,我很不好意思承认问题出在名为
initialize
的类中。我接受这个答案,因为它很有帮助。