繁体   English   中英

如何在TypeScript类中扩展ES6类

[英]How to extend an ES6 class in a TypeScript class

我有一个用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”

我在esModuleInterop设置为true

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

// MyClass.d.ts
export = MyClass;

declare class MyClass {
  myfunction: void;
}

这使编译器感到满意,但是在浏览器中生成的代码中,我看到了一些意外情况,并且控制台日志无法打印:

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

我究竟做错了什么?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM