在类中实现接口问题

时间:2019-08-02 19:23:47

标签: javascript typescript

我在类外定义了两个接口。然后,我实现了这两个接口,并试图将它们设置为该类的私有属性,但是仍然存在错误,但我无法想象。

有人可以帮我吗?

enter image description here

编译器中没有错误消息,但是VSCode显示:

enter image description here

3 个答案:

答案 0 :(得分:2)

错误消息指出:您需要直接从类中的接口实现属性。 在这种情况下,这意味着:

class Handler implements Isize, Iposition {
  public width: number;
  public height: number;
  public x: number;
  public y: number

  constructor(x, y) {
    this.width = 300;
    this.height = 450;

    this.x = x;
    this.y = y;
  }
}

答案 1 :(得分:1)

因此,如果您不想更改类实现,并且可以更改接口,则可以使用以下方法:


interface Isize {
  size: {
    width: number;
    height: number;
  };
}

interface Iposition {
  position: {
    x: number;
    y: number;
  }
}

class Handler implements Isize, Iposition {
  position: { x: number; y: number; };
  size: { width: number; height: number; };
}

答案 2 :(得分:0)

您已在Handler上实现了2个接口,但尚未在类中创建接口属性。如果您需要将字段设为可选,则可以这样做。 (只需在键后加问号即可。)

interface Isize {
  width? : number;
  height? : number;
}

在以下情况下,您不会收到错误消息。

class Handler implements Isize, Iposition {
  public x; 
  public y;
  public height;
  public width:;
  .......
  ........
  .........
}
相关问题