Typescript:使用外部声明的变量

typescript: using variables declared externally

本文关键字:声明 变量 外部 Typescript      更新时间:2023-09-26

我有一个迁移到typescript的应用程序。在我的index.html文件中,我有两个文件(实际上,更多,但这些都很重要):

  • static.js -其中包含声明:var staticData = {...};,由grunt-json grunt任务自动构建(不管它做什么,它只是动态生成的)
  • app.js -这是转储到js中的typescript源。

有一个用于构建app.js的.ts文件,其内容如下:

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

它只是声明了角常数。当我尝试编译这个typescript文件时,我得到以下错误:

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.

我能理解这个问题——typescript不知道这些变量是什么。问题是staticData是一个js-file变量,我不知道如何使这些文件相互处理……Lodash的情况是相同的——它作为外部脚本加载到HTML中。

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

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

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

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