javascript - 如何在 TypeScript 中声明数组对象
问题描述
我正在使用 Angular 4,我想在组件类中声明一个属性,该属性是一个包含多个数组的对象,如下所示。
history: {
Movies: Array<Media>,
Images: Array<Media>,
Music: Array<Media>,
};
Media 是一个如下所示的界面:
export interface Media {
size: number,
name: String
}
当我尝试推送对象历史元素时,例如:
this.history.Music.push(music);
鉴于music
具有相同的类型(媒体)。
它给了我以下错误:
1449 错误类型错误:无法读取未定义的属性“音乐”
我想这与声明有关。
注意:我已经尝试过类似的东西:
history: {
Movies: Array<Media>[],
Images: Array<Media>[],
Music: Array<Media>[],
};
和:
history: {
Movies: Media[],
Images: Media[],
Music: Media[],
};
同样的错误仍然存在。
解决方案
如下初始化history
对象,以及将所有属性设置为empty
数组
history: {Movies: Array<Media>, Images: Array<Media>, Music: Array<Media>} = {
Movies: [],
Images: [],
Music: []
};
推荐阅读
- laravel - 在已发布的 Web 项目中更新 vue 文件的问题
- angular - 如何分别访问表单控件值
- google-cloud-platform - 无法识别 Terraform 代码的环境变量(TF_VAR 变量)
- php - 如何使用 SQLServer 中的日期时间数据设置 datetime-local 的输入值?
- json - 古腾堡中的“更新失败。响应不是有效的 JSON 响应”
- ios - 下面的代码应该如何编写测试用例?
- reactjs - 使用 @arcgis/core 进行导入时如何将样式应用于 MapView?
- javascript - 将键作为对象的映射
- javascript - BigQuery API 不返回数据集的最新表
- javascript - 我在使用 firebase 的 chrome 扩展中遇到此错误