javascript - 将类导入到全局范围

标签 javascript typescript

我正在尝试将一个类导入全局范围,并且我能够做到这一点,但是当我尝试扩展该类时,我收到一条错误消息:

Type 'any' is not a constructor function type.

这就是我正在做的事情来得到这个错误:

ma​​in.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/

相关文章:

javascript - 将 JavaScript 关联数组转换为 TypeScript

javascript - image.onload 到方法中

javascript - setTimeout 导致未捕获类型错误 : number is not a function

javascript - Jquery Div 从右到左的幻灯片转换无法正常工作

javascript - 如何在 elasticsearch 中获取每种索引类型的计数?

javascript - 是否可以在不使用 for 循环的情况下找到质数?只用filter方法可以吗?

typescript - Webpack 4 加载库 Sourcemap

javascript - 当 div 标签溢出时添加类

typescript - 将函数结果绑定(bind)到 Angular2 组件 (TypeScript)

javascript - 在 TypeScript 中使用泛型