我可以声明模块在Typescript中全局可用吗?
我正在使用TypeScript构建一个包含主干、木偶和主干关联的web应用程序 使用Webpack的ProvidePlugin,这些库将被捆绑并随处可用,但为了让TS编译器满意,我需要在我的应用程序中的每个模块中添加以下内容:我可以声明模块在Typescript中全局可用吗?,typescript,backbone.js,Typescript,Backbone.js,我正在使用TypeScript构建一个包含主干、木偶和主干关联的web应用程序 使用Webpack的ProvidePlugin,这些库将被捆绑并随处可用,但为了让TS编译器满意,我需要在我的应用程序中的每个模块中添加以下内容: import * as _ from "underscore"; import * as Backbone from "backbone"; import * as Marionette from "backbone.marionette"; import "backbo
import * as _ from "underscore";
import * as Backbone from "backbone";
import * as Marionette from "backbone.marionette";
import "backbone-associations";
这可能有数百个模块/文件
无论如何,是否有必要告诉TypeScript这些将是普遍可用的?可能是tsconfig.json中的某些设置?它取决于(例如)下划线
键入。如果您使用的是TS 2+,编译器应该在node_modules/@types/..
中选择所有类型。您还可以在tsconfig.json
的typings
属性中自己指定它们
它将显示以下错误:
"_" refers to a UMD global, but the current file is a module.
Consider adding an import instead.
解决这个问题的一种方法是创建一个自定义的.d.ts
文件,您可以将其称为global.d.ts.
无所谓。将其放入TS项目并添加以下内容:
import * as _ from 'underscore';
declare global {
const _:_.UnderscoreStatic;
}
现在,下划线
应该在全球范围内可用,并且您还应该能够混合使用UMD+ES导入
/导出
语句 这取决于(例如)下划线
打字。如果您使用的是TS 2+,编译器应该在node_modules/@types/..
中选择所有类型。您还可以在tsconfig.json
的typings
属性中自己指定它们
它将显示以下错误:
"_" refers to a UMD global, but the current file is a module.
Consider adding an import instead.
解决这个问题的一种方法是创建一个自定义的.d.ts
文件,您可以将其称为global.d.ts.
无所谓。将其放入TS项目并添加以下内容:
import * as _ from 'underscore';
declare global {
const _:_.UnderscoreStatic;
}
现在,
下划线
应该在全球范围内可用,并且您还应该能够混合使用UMD+ES导入
/导出
语句 我使用的是TS 2.2.1,所有输入都在节点模块/@types
中,但如果我从特定模块中删除上述任何导入,我仍然会出错。我想如果导入文件在任何文件中的位置,那么它们必须在所有文件中。在尝试删除所有模块之前,我想知道这一点,因为我有大量的模块。您应该在问题中添加错误。否则,很难猜测您遇到了什么问题,因为这还取决于您的TS配置。我使用的是TS 2.2.1,所有键入都在节点模块/@types
中,但如果从特定模块中删除上述任何导入,我仍然会出错。我想如果导入文件在任何文件中的位置,那么它们必须在所有文件中。在尝试删除所有模块之前,我想知道这一点,因为我有大量的模块。您应该在问题中添加错误。否则,很难猜测您遇到了什么问题,因为这也取决于您的TS配置。