使用界面的一部分来创建对象

时间:2016-12-29 03:08:25

标签: angular typescript

我有界面

export interface Config {
  buttons: {
    close?: boolean;
    accept?: boolean;
  }
  ...
}

当我将上述接口导入另一个模块并执行此操作时,我收到错误:

buttons: Config.buttons = {};
  

“Config”仅指一种类型,但是被用作命名空间

我稍后在代码中使用buttons变量:

 onConfig = (config: Config) => {
   Object.assign(this.buttons, config.buttons);
 }

关于如何使其发挥作用的任何建议?

当我这样做时,它运作正常:

buttons: any = {};

但这是一个好习惯吗?

1 个答案:

答案 0 :(得分:1)

我认为typeof可能会在这里工作,但事实并非如此。要解决此问题,您可以将按钮移动到其自己的界面中:

export interface Buttons { // or ButtonsConfig or whatever
  close?: boolean;
  accept?: boolean;
}

export interface Config {
  buttons: Buttons;
  ...
}

然后将其用作类似属性的类型:

buttons: Buttons = {};