如何将数字 [] 匹配仅包含数字的界面

How to turn a number[] matches an interface with only numbers included

我尝试在我的 nestJS 后端中实现行星位置的增量函数。 我的星球看起来像这样:

planets: Planet[] = [{
      name: 'A',
      [...]
      pos: this.generatePlanetPosition(),
      siege: false,
      [...]
    },
];

我的持仓界面:

export interface PlanetPosition {
  x: number;
  y: number;
}

我的功能是这样的:

  generatePlanetPosition(): PlanetPosition {
  [...]
    let position = [this.x, this.y];
    return position;
  }

我收到错误消息,类型 number[](位置)缺少类型 'PlanetPosition' 中的以下属性:x,y

我怎样才能管理函数 return 既是变量又是在匹配界面的同时填充我星球中的位置?

您的接口定义了一个具有 xy 属性的对象,但是 [this.x, this.y] 创建了一个包含两个元素的数组;它的类型(假设 xy 是数字)是 number[]number[] 不可分配给 {x: number; y: number}。数组没有 xy 属性。

如果你想从那个函数中得到一个 PlanetPosition,return 一个具有 xy 属性的对象:

generatePlanetPosition(): PlanetPosition {
    // ...
    let position = {x: this.x, y: this.y};
// −−−−−−−−−−−−−−−−^^^−−−−−−−−−^^−−−−−−−^
    return position;
}

...再次假设 this.xthis.y 是数字。