在我的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;
}
}
这给了我以下错误:
类型'typeof'* .json''无法转换为类型 'ProcessMilestone []&GT;'。类型'typeof中缺少属性'includes' '*上传.json'”。
很明显,由于'* .json'的当前模块定义,无法进行转换。有可能调整这个以便这可能吗?我不知道可能性。
只有尽职调查解决方案才有可行。如果没有,我将改为从后端获取数据。
答案 0 :(得分:8)
你在运行时做什么工作?如果是这样,您始终可以通过any
:
this.data = <ProcessMilestone[]> <any> milestones;
这是我能想到的最小努力。当然,如果事实证明你的JSON文件没有包含正确类型的对象,那么它会在运行时爆炸而没有来自TypeScript的警告,TypeScript被类型断言强制进入静音。