加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Angular / Typescript – 由于模块定义,无法转换导入的’* .json

发布时间:2020-12-17 17:52:01 所属栏目:安全 来源:网络整理
导读:在我的Angular / Typescript2.2项目中,出于开发目的,我不时导入* .json文件作为我的组件中的测试数据. 为了允许将.json文件作为模块导入,我将以下内容添加到typings.d.ts中 declare module '*.json' { const value: any; export default value;} 当然,我可以
在我的Angular / Typescript2.2项目中,出于开发目的,我不时导入* .json文件作为我的组件中的测试数据.
为了允许将.json文件作为模块导入,我将以下内容添加到typings.d.ts中

declare module '*.json' {
  const value: any;
  export default value;
}

当然,我可以将这些文件的内容分配给类型为any的字段,但我想将它们分配给类型为我的一个接口的字段.请注意,我希望模块定义中的值对所有类型保持开放.我不想将它硬编码到1个接口.

import {ProcessMilestone} from '../../../domain';
import * as milestones from './test.json';

export class MilestoneSearchComponent implements OnInit {
  data: ProcessMilestone[];

  ngOnInit(): void {
      this.data = <ProcessMilestone[]> milestones;
  }
}

这给了我以下错误:

Type ‘typeof ‘*.json” cannot be converted to type
‘ProcessMilestone[]>’. Property ‘includes’ is missing in type ‘typeof
‘*.json”.

很明显,由于’* .json’的当前模块定义,无法进行转换.有可能调整这个以便这可能吗?我不知道可能性.

只有极少工作的解决方案是可行的.如果没有,我将改为从后端获取数据.

解决方法

无论你在运行时做什么工作?如果是这样,您可以始终强制TypeScript通过以下任何方式允许类型断言:

this.data = <ProcessMilestone[]> <any> milestones;

这是我能想到的最小努力.当然,如果事实证明你的JSON文件不包含正确类型的对象,它将在运行时爆炸而没有来自TypeScript的警告,TypeScript已被类型断言强制进入静默状态.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读