我有一个迁移到打字稿的应用程序。在我的index.html文件中,我有2个文件(实际上,更多,但这些是重要的):
var staticData = {...};
,由grunt-json
grunt任务自动构建(永远不知道它做什么,它只是动态生成) .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中。
答案 0 :(得分:4)
快速解决方案是使用any
类型的环境定义:
declare var staticData: any;
declare var _: any;
这将允许您以任何方式在TypeScript中使用这些变量。如果您愿意,可以从此开始构建staticData
的类型信息。
请注意,对于_
,您只需在项目中包含lodash.d.ts
定义文件即可。那已经为你定义了lodash的所有类型信息。你可以找到here。