我可以使用Typescript将模块声明为全局可用吗?

时间:2017-03-08 12:25:02

标签: typescript backbone.js

我使用TypeScript作为使用Backbone,Marionette和Backbone Associations构建的Web应用程序。

这些库将捆绑在一起,并且可以在任何地方使用Webpack的ProvidePlugin,但为了让TS编译器满意,我需要将以下内容添加到我的应用程序中的每个模块中:

import * as _ from "underscore";
import * as Backbone from "backbone";
import * as Marionette from "backbone.marionette";
import "backbone-associations";

这可能是数百个模块/文件。

有没有告诉TypeScript这些将一般可用?也许是tsconfig.json中的一些设置?

1 个答案:

答案 0 :(得分:-1)

取决于(例如)underscore类型。如果你正在使用TS 2+,编译器应该选择node_modules/@types/...内的所有类型。您也可以在typings的{​​{1}}属性中自行指定。 See the docs.

TypeScript tries to prevent you from mixing UMD and ES modules.它会显示以下错误:

tsconfig.json

解决此问题的一种方法是创建自定义"_" refers to a UMD global, but the current file is a module. Consider adding an import instead. 文件,您可以将其称为.d.ts并不重要。将它放在您的TS项目中并添加以下内容:

global.d.ts.

现在import * as _ from 'underscore'; declare global { const _:_.UnderscoreStatic; } 应该是全球可用的,您还应该能够混合使用UMD + ES underscore / import语句。 You can find more info about this in the docs