首页 > 解决方案 > 如何在 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:“MyTSClass”类型上不存在属性“myfunction”

我已经在我的 tsconfig中esModuleInterop设置了。true

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

// MyClass.d.ts
export = MyClass;

declare class MyClass {
  myfunction: void;
}

这让编译器很高兴,但是在浏览器中生成的代码中我看到了一些意想不到的东西,并且控制台日志没有打印出来:

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

我究竟做错了什么?

标签: javascripttypescript

解决方案


从您提供的信息中很难判断,但我会从调用的任何内容开始initialize。我假设您不是要使用它constructor吗?在 Chrome 中,您可以使用该debugger;语句在代码中的特定点启动调试器,我认为这比设置断点更容易。从那里,您可以单步执行代码并查看发生了什么。您还可以 console.log 类的实例以检查其原型链以确保该myfunction方法存在。


推荐阅读