Arrays 角度-无法添加属性xxxx,对象不可扩展

Arrays 角度-无法添加属性xxxx,对象不可扩展,arrays,angular,typescript,Arrays,Angular,Typescript,我使用的是Typescript(Angular),我有一个错误:无法添加属性媒体,对象不可扩展 我想在步骤对象中添加媒体元素。在原始步骤中,对象不包含任何媒体阵列 export interface Step { duration: string; instructions: string; ingredients_instructions?: string; ingredients?: Quantity[]; media?: Media[]; action?: Cooki

我使用的是Typescript(Angular),我有一个错误:
无法添加属性媒体,对象不可扩展

我想在步骤对象中添加媒体元素。在原始步骤中,对象不包含任何媒体阵列

export interface Step {
  duration: string;
  instructions: string;
  ingredients_instructions?: string;
  ingredients?: Quantity[];
  media?: Media[];
  action?: CookingAction;
}

export interface Media {
  id: string;
  author: string;
  license: string;
  creation_date: string;
  modification_date: string;
  bytes: string;
}

stepsSelection: Step[] = [];
...
const media = {} as Media;
media.bytes = 'foo';
media.license = 'DR';
this.stepsSelection[i].media = [ ];
this.stepsSelection[i].media[0] = media;
像这样试试

this.stepsSelection[i] = {};    
this.stepsSelection[i]['media'] = [];
this.stepsSelection[i].media[0] = media;

如果要动态地向对象添加属性,可以这样修改界面

export interface Step {
  duration: string;
  instructions: string;
  ingredients_instructions?: string;
  ingredients?: Quantity[];
  action?: CookingAction;
  [prop: string]: any;
}

const step = {} as Step;
const media = {} as Media;
step.media = [ media ];
step.foo = 'bar';

this.stepsSelection[i]={};=>无法将{}赋值给Step typeYes,因为创建对象时不尊重接口。你申报了一些强制性变量。放?在步骤和媒体界面中添加所有变量,它将起作用。或者,如果要保留它们,则需要在将对象指定给步骤[]类型时传递它们。不知道我的解释是否清晰,但我不想修改步骤界面(不是我的项目)然后尝试以下操作:步骤选择[I]={media:[media]};而且,这不是一个好的解决方案。它允许您添加任何对象。你将失去严格打字的所有好处…我的问题来自@ngrx(而不是typeScript)。