我正在尝试将一个类导入全局范围,并且我能够做到这一点,但是当我尝试扩展该类时,我收到一条错误消息:
Type 'any' is not a constructor function type.
这就是我正在做的事情来得到这个错误:
main.ts
const MyClass = require('./core/MyClass');
class MyTestClass extends MyClass {
}
然后我尝试使用 import MyClass from './core/MyClass'
而不是 const,但这似乎只在当前文件的范围内,而这并不也帮帮我吧。
core/MyClass.ts
export default class MyClass {
}
我尝试过使用命名空间,它按照我想要的方式在 typescript 中工作,但是一旦编译成 JavaScript,命名空间就未定义。
有没有办法可以将我的类导入全局范围,并且在扩展类时不会出现上述错误?
最佳答案
在您的代码中:
require('./core/MyClass');
如果您的文件中没有导入/导出
,则 TypeScript 会假定该文件是全局。但是,根据您对文件的使用情况(例如在 NodeJS 中或使用像 webpack 这样的 bundler )该文件仍然是一个模块,而不是全局的。
酷,这样你就可以在全局中添加一些东西,比如:
export default class MyClass {
}
(global as any).MyClass = MyClass;
请务必包含 node.d.ts
以获取全局
。
更多
当然我也想警告 default
因为你写的 const/require
也是错误的。您需要类似 const {default} = require('module/foo');
的内容。更多:https://basarat.gitbooks.io/typescript/content/docs/tips/defaultIsBad.html 🌹
关于javascript - 将类导入到全局范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38837974/