gpt4 book ai didi

javascript - typescript 错误运行时错误: Cannot read property 'prototype' of undefined when extending

转载 作者:IT王子 更新时间:2023-10-29 03:14:43 25 4
gpt4 key购买 nike

所以我在控制台中收到上述错误。这是由于 _super 在传递给 __extends(在生成的 .js 中)时未定义。

下面是一些可用于重现错误的测试代码:

//This is the entirety of the file Test.ts
module Test {
export class Test1 {
public Name: string;
public Number: number;

constructor() {

}
}
}

然后在一个单独的文件中,我有一个继承自该文件的类:

/// <reference path="Test.ts" />
module Test {
export class Test2 extends Test1 {
constructor() {
super();
}
}
}

不应该需要 <reference path...(实际上也不需要),但我添加它是为了看看它是否有帮助(它没有)。

文件以正确的顺序(先是 Test.ts 然后是 Test2.ts)通过 BundleConfig 包含(无论是否进行优化都不会产生任何影响)。

我可能是个菜鸟,但我一点也不知道我搞砸了什么。我在网上发现的这个问题的所有其他实例都来自使用命令行编译器将多个 Typescript 文件合并到一个文件中的人。我正在使用 bundler 来执行此操作,但即使我不将它们组合在一起,我也会遇到完全相同的问题。

请帮帮我,我已经束手无策了!

根据要求,这是编译后的 javascript:测试.js:

//This is the entirety of the file Test.ts
var Test;
(function (Test) {
var Test1 = (function () {
function Test1() {
}
return Test1;
})();
Test.Test1 = Test1;
})(Test || (Test = {}));
//# sourceMappingURL=Test.js.map

Test2.js:

var __extends = this.__extends || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
function __() { this.constructor = d; }
__.prototype = b.prototype;
d.prototype = new __();
};
/// <reference path="Test.ts" />
var Test;
(function (Test) {
var Test2 = (function (_super) {
__extends(Test2, _super);
function Test2() {
_super.call(this);
}
return Test2;
})(Test.Test1);
Test.Test2 = Test2;
})(Test || (Test = {}));
//# sourceMappingURL=Test2.js.map

最佳答案

发生这种情况的可能原因:

  1. 四重检查 BundleConfig 是否以正确的顺序连接文件。这是迄今为止导致该错误的最常见原因。
  2. 验证您在 Test.ts 中没有任何顶级 export 指令。这会导致文件成为外部模块,Test1 将不再可见。

否则,您应该将发出的 JavaScript 发布到问题中,以便我们诊断导致问题的原因。

关于javascript - typescript 错误运行时错误: Cannot read property 'prototype' of undefined when extending,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24420500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com