Why am I getting a 'TypeError: undefined is not a function' here?
Why am I getting a 'TypeError: undefined is not a function' here?
我在尝试 运行 下面指定的代码时 运行 遇到了一个奇怪的(对我来说)错误。代码编译正常,但是当我 运行 它时,节点 returns 这个错误:
<location>/C.js:11
_super.call(this, "C");
^
TypeError: undefined is not a function
at new C (<location>/C.js:11:16)
at Function.B.factory (<location>/B.js:15:17)
at Function.Test.test (<location>/Test.js:6:18)
at Object.<anonymous> (<location>/app.js:2:6)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
at startup (node.js:129:16)
编译命令: tsc --module commonjs -t ES5 app.ts
运行 with: 节点 app.js
显然我是 Typescript 和 Javascript 的新手,但我就是不明白为什么会失败。我四处寻找解决方案,但尽管这似乎是一个常见问题,但我对我的特定问题一无所知。任何人都可以阐明为什么会这样吗?以下是文件:
A.ts
class A {
constructor(private name: string) {}
}
export = A;
B.ts
import A = require('./A');
import C = require('./C');
class B extends A {
constructor(value: string) {
super(value);
}
public static factory() {
var a: A = new C();
return a;
}
}
export = B;
C.ts
import B = require('./B');
class C extends B {
constructor() {
super("C");
}
}
export = C;
Test.ts
import B = require('./B');
class Test {
public static test() {
return B.factory();
}
}
export = Test;
app.ts
///<reference path='./typings/node/node.d.ts' />
import Test = require('./Test');
Test.test();
为了在这里保存一些 space,我粘贴了生成的 javascript 代码。如果您有兴趣,可以在这里找到:javascript dump
这是因为你有循环依赖。 C
依赖于 B
而 B
依赖于 C
。因此 B
根据规范未定义。 https://nodejs.org/api/modules.html#modules_cycles
我在尝试 运行 下面指定的代码时 运行 遇到了一个奇怪的(对我来说)错误。代码编译正常,但是当我 运行 它时,节点 returns 这个错误:
<location>/C.js:11
_super.call(this, "C");
^
TypeError: undefined is not a function
at new C (<location>/C.js:11:16)
at Function.B.factory (<location>/B.js:15:17)
at Function.Test.test (<location>/Test.js:6:18)
at Object.<anonymous> (<location>/app.js:2:6)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
at startup (node.js:129:16)
编译命令: tsc --module commonjs -t ES5 app.ts
运行 with: 节点 app.js
显然我是 Typescript 和 Javascript 的新手,但我就是不明白为什么会失败。我四处寻找解决方案,但尽管这似乎是一个常见问题,但我对我的特定问题一无所知。任何人都可以阐明为什么会这样吗?以下是文件:
A.ts
class A {
constructor(private name: string) {}
}
export = A;
B.ts
import A = require('./A');
import C = require('./C');
class B extends A {
constructor(value: string) {
super(value);
}
public static factory() {
var a: A = new C();
return a;
}
}
export = B;
C.ts
import B = require('./B');
class C extends B {
constructor() {
super("C");
}
}
export = C;
Test.ts
import B = require('./B');
class Test {
public static test() {
return B.factory();
}
}
export = Test;
app.ts
///<reference path='./typings/node/node.d.ts' />
import Test = require('./Test');
Test.test();
为了在这里保存一些 space,我粘贴了生成的 javascript 代码。如果您有兴趣,可以在这里找到:javascript dump
这是因为你有循环依赖。 C
依赖于 B
而 B
依赖于 C
。因此 B
根据规范未定义。 https://nodejs.org/api/modules.html#modules_cycles