网站搜索

javascript - 如何在 TypeScript 类中扩展 ES6 类


我有一个用 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:属性 'myfunction' 在类型 'MyTSClass' 上不存在

我在 tsconfig 中将 esModuleInterop 设置为 true。

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

// MyClass.d.ts
export = MyClass;

declare class MyClass {
  myfunction: void;
}

这使得编译器很高兴,但在浏览器生成的代码中我看到了一些意外情况,并且控制台日志没有打印出来:

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

我哪里做错了?

答案#1

根据你提供的信息很难判断,但我会从调用 initialize 的地方开始。我猜你不是想用 constructor 吗?在 Chrome 中,你可以使用 debugger; 语句在代码的特定位置启动调试器,我认为这比设置断点更方便。从那里,你可以逐步执行代码,看看发生了什么。你也可以使用 console.log 来记录你类的实例,以检查它的原型链,确保 myfunction 方法存在。