typescript:使用外部声明的变量

时间:2015-07-16 15:12:26

标签: javascript typescript

我有一个迁移到打字稿的应用程序。在我的index.html文件中,我有2个文件(实际上,更多,但这些是重要的):

  • static.js - 包含声明:var staticData = {...};,由grunt-json grunt任务自动构建(永远不知道它做什么,它只是动态生成)
  • app.js - 这是转储到js的打字稿来源。

.ts文件用于构建app.js,其中包含以下内容:

mp.core.CoreModule
.constant('CONFIG', staticData.config)
.constant('lodash', _)

它只是声明角度常数。当我尝试编译这个打字稿文件时,我收到以下错误:

Running "typescript:app" (typescript) task
>> app/modules/core/coreModuleConfig.ts(2,21): error TS2304: Cannot find name 's
taticData'.
>> app/modules/core/coreModuleConfig.ts(3,21): error TS2304: Cannot find name '_
'.
Warning: Task "typescript:app" failed. Use --force to continue.

我能理解这个问题 - 打字稿不知道这些变量是什么。问题是staticData是一个js文件变量,我不知道如何让这些文件相互处理...... Lodash的情况是一样的 - 它作为外部脚本加载到HTML中。

1 个答案:

答案 0 :(得分:4)

快速解决方案是使用any类型的环境定义:

declare var staticData: any;
declare var _: any;

这将允许您以任何方式在TypeScript中使用这些变量。如果您愿意,可以从此开始构建staticData的类型信息。

请注意,对于_,您只需在项目中包含lodash.d.ts定义文件即可。那已经为你定义了lodash的所有类型信息。你可以找到here