我使用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中的一些设置?
答案 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