Typescript ReferenceError:当我在构造函数中使用MyClass时,未定义MyClass



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

最新更新