首页 > 解决方案 > 如何在 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[],
}; 

同样的错误仍然存​​在。

标签: javascriptarraysangulartypescript

解决方案


如下初始化history对象,以及将所有属性设置为empty数组

history: {Movies: Array<Media>, Images: Array<Media>, Music: Array<Media>} = {
  Movies: [],
  Images: [],
  Music: []
};

推荐阅读