【问题标题】:Typescript interfaces打字稿接口
【发布时间】:2017-09-02 15:20:58
【问题描述】:

我正在尝试为 Angular 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;
}

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

类型'{模型:字符串;颜色:假;显示线框:假;显示网格: 真的; clipping: { enabled: false;...' 不可分配给类型 'IRenderState'。属性“剪裁”的类型不兼容。 类型'{启用:假;可见:假;飞机:[{名称:字符串;平面:平面;对象:空;启用:t...' 不可分配给类型 '{ 启用:布尔值;可见:布尔值;飞机:[IPlane,IPlane, 飞机]; }'。 属性“平面”的类型不兼容。 键入'[{名称:字符串;平面:平面;对象:空;启用:真;翻转:假;大小:[数量,数量]; ...' 不可分配给 键入“[IPlane,IPlane,IPlane]”。 键入'{名称:字符串;平面:平面;对象:空;启用:真;翻转:假;大小:[数量,数量]; }' 不可分配给 键入“IP 平面”。 属性“大小”的类型不兼容。 类型 '[number, number]' 不能分配给类型 '[0, 0]'。 类型“数字”不可分配给类型“0”。)

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

【问题讨论】:

  • 在您的 IPlane 界面中,使用 object:object 而不是 object:{}
  • 亲爱的约翰,谢谢你的回答,但对象:对象;声明给出了错误找不到名称对象。
  • 好的,约翰,只需要声明 object:Object 大写 O。如果您将您的评论放入正确的答案中,我很高兴接受您的解决方案并支持它。再次感谢您的帮助
  • @Dino object 类型是在 TypeScript 2.2 中引入的,因此您需要升级才能使用它。值得注意的是Objectobject 是不同的!

标签: angular typescript interface


【解决方案1】:

Typescript 2.2 具有“对象”类型(均较低)。建议从现在开始使用这个。

interface IPlane {
    object: object;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-14
    • 2019-05-04
    • 1970-01-01
    • 2013-01-26
    • 2021-02-04
    • 2017-04-15
    • 2021-02-02
    相关资源
    最近更新 更多