如何在Angular中引入并使用包含uids对象的外部JS脚本
解决方案
报错的核心原因是TypeScript无法感知你在index.html中引入的外部脚本挂载的全局uids对象,你可以通过以下几种方式解决:
方式1:单文件临时声明(仅当前组件使用时适用)
在你调用uids的app.component.ts文件顶部,添加全局变量声明即可:
// 放在文件最顶部,import语句之后即可 declare let uids: any;
如果需要更安全的类型校验,也可以指定具体类型:
// uids是字符串键值对的映射对象,用这个声明可以获得类型提示 declare let uids: Record<string, string>;
声明后就可以正常调用uids[value],不会再触发TS报错。
方式2:全局声明(多组件共用时适用)
如果项目多个文件都需要调用uids,可以直接配置全局类型声明,避免每个文件重复写声明:
- 在项目
src目录下新建typings.d.ts文件(如果已有则直接编辑) - 在文件中加入以下内容:
declare let uids: Record<string, string>;
保存后整个Angular项目的所有TS文件都可以直接使用uids,无需额外声明。
额外注意事项
如果运行时出现uids is not defined的报错,需要检查index.html中的script标签引入顺序,确保uids.js的引入位置在Angular打包生成的脚本之前,保证页面加载时先初始化uids对象再执行Angular业务代码。
内容的提问来源于stack exchange,提问作者zaydoosh
相关产品推荐
相关产品推荐

