我有一个在my_class.ts
中定义的类
export default class MyClass {}
我在构造函数中还有另一个类使用它
import MyClass from "./my-class.ts";
export default class MyOtherClass {
constructor(public myClass: MyClass) {}
}
在我的main.ts
中,我在运行代码时遇到引用错误(编译时没有错误(
import MyClass from "./my-class.ts";
import MyOtherClass from "./my-other-class.ts";
const myOtherClass = new MyOtherClass(new MyClass());
^^^^^^^
ReferenceError: my_class_1 is not defined
如果我将我的代码更改为
const myClass = new MyClass();
const myOtherClass = new MyOtherClass(myClass);
成功了。
当我将 TypeScript 从 2.8.3 升级到 2.9.1 时,就会发生这种情况。 我检查了编译的JavaScript代码,它们在2.8.3和2.9.1之间完全相同。
我找出了根本原因。这与 v2.9 中 TypeScript 转译模块中的一些更改有关。当我编译并运行源代码时,或者使用带有默认选项的ts-node
,一切都运行良好。但是当我使用node -r ts-node/register/transpile-only main.ts
时,我得到了这个错误。
TypeScript 中的开发人员已经承认了这个问题,他们说它将在 v2.9.2 中修复。
https://github.com/TypeStrong/ts-node/issues/591 https://github.com/Microsoft/TypeScript/issues/24620