我正在尝试将一个类导入全局范围,我能够做到,但是当我尝试扩展该类时,我得到一个错误说:
类型'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,命名空间就不确定了。
有没有办法可以将我的类导入全局范围,而不是在扩展类时得到上面的错误?
答案 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