打字稿界面

时间:2017-04-07 09:38:59

标签: angular typescript interface

我正在尝试在角度2中为以下对象创建一个接口:

// set the render state object
    this.aRenderState = {
      model: "",
      colour: false,
      showWireframe: false,
      showGrid: true,
      clipping: {
          enabled: false,
          visible: false,
          planes: [
              {
                  name: 'X',
                  plane: new THREE.Plane(new THREE.Vector3(1, 0, 0), 0),
                  object: null,
                  enabled: true,
                  flip: false,
                  size: [this.aDomain.getSize().z, this.aDomain.getSize().y],
              },
              {
                  name: 'Y',
                  plane: new THREE.Plane(new THREE.Vector3(0, 1, 0), 0),
                  object: null,
                  enabled: false,
                  flip: false,
                  size: [this.aDomain.getSize().x, this.aDomain.getSize().z]
              },
              {
                  name: 'Z',
                  plane: new THREE.Plane(new THREE.Vector3(0, 0, -1), 0),
                  object: null,
                  enabled: false,
                  flip: false,
                  size: [this.aDomain.getSize().x, this.aDomain.getSize().y]
              },
          ]
      }
    }

以下是我的尝试:

export interface IPlane {
  name: string;
  plane: THREE.Plane;
  object: {};
  enabled: boolean;
  flip: boolean;
  size: number[];
}

export interface IClipping {
  enabled: boolean;
  visible: boolean;
  planes: IPlane[];
}

export interface IRenderState {
  model: string;
  colour: boolean;
  showWireframe: boolean;
  showGrid: boolean;
  clipping: IClipping;
}

当我运行项目时,我收到以下错误消息:

  

输入' {model:string;颜色:假; showWireframe:false; showGrid:   真正;剪辑:{enabled:false; ...'不能分配给类型   ' IRenderState&#39 ;.财产类型'裁剪'是不相容的。       输入' {enabled:false;可见:错误;飞机:[{name:string;飞机:飞机; object:null;启用:t ...'不能分配给类型   ' {enabled:boolean; visible:boolean;飞机:[IPlane,IPlane,   IPLANE]; }&#39 ;.         财产类型'飞机'是不相容的。           输入' [{name:string;飞机:飞机; object:null;启用:true;翻转:假;尺寸:[数量,数量]; ...'不能转让给   键入' [IPlane,IPlane,IPlane]'。             输入' {name:string;飞机:飞机; object:null;启用:true;翻转:假;尺寸:[数量,数量]; }'不能转让给   键入' IPlane'。               财产类型'大小'是不相容的。                 输入' [号码,号码]'不能分配类型' [0,0]'。                   输入'数字'不能分配给' 0'。)

我无法理解我做错了什么。

1 个答案:

答案 0 :(得分:0)

打字稿2.2有"对象"类型(全部更低)。建议从现在开始使用这个。

interface IPlane {
    object: object;
}