将类导入全局范围

时间:2016-08-08 20:28:59

标签: javascript typescript

我正在尝试将一个类导入全局范围,我能够做到,但是当我尝试扩展该类时,我得到一个错误说:

  

类型'any'不是构造函数类型。

所以这就是我为了得到这个错误而做的事情:

main.ts

const MyClass = require('./core/MyClass');

class MyTestClass extends MyClass {

}

然后我尝试使用import MyClass from './core/MyClass'而不是const,但这似乎只是在当前文件的范围内,这对我没有帮助。

芯/ MyClass.ts

export default class MyClass {

}

我尝试过使用命名空间,这些命名空间按照我想要的方式工作,但是一旦编译成javascript,命名空间就不确定了。

有没有办法可以将我的类导入全局范围,而不是在扩展类时得到上面的错误?

1 个答案:

答案 0 :(得分:1)

在您的代码中,您有:

require('./core/MyClass');

如果您的文件中没有import / export,则TypeScript会假定该文件是全局。但是,根据您对文件的使用情况(例如在NodeJS中或使用像webpack这样的捆绑器)该文件仍然是模块而非全局

很酷,你可以把它放在全球范围内,比如:

export default class MyClass {
}
(global as any).MyClass = MyClass;

请务必加入node.d.ts以获取global

更多

当然,我也想警告default因为你写的const / require也是错的。你需要像const {default} = require('module/foo');这样的东西。更多:https://basarat.gitbooks.io/typescript/content/docs/tips/defaultIsBad.html