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

时间:2018-06-06 07:46:51

标签: typescript

我在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之间完全相同。

1 个答案:

答案 0 :(得分: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