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:“MyTSClass”类型上不存在属性“myfunction”
我已经在我的 tsconfig中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
方法存在。
推荐阅读
- javascript - angularjs:在加载打开到新标签的第二页时,主页的 UI 被阻止
- c++ - c++在char开头插入char
- r - 将字符串拆分为新变量
- kendo-ui - 当我们在 IE 浏览器中单击打开它时,Kendo Dropdown 会关闭
- java - Java 类似于 Kotlins .copy() 函数
- datetimepicker - 日历输入组件是否从语义 UI 中删除?
- javascript - Angular 6 - 多级嵌套反应表单重复输入
- azure - 使用 Azure Web App 自动化 VSTS 负载测试
- html - 如何仅使用 CSS 摆脱重音符号
- redis - ERR 未知命令 'JSON.SET' - Rejson/Redis