【发布时间】:2021-02-28 06:30:29
【问题描述】:
我正在用打字稿做简单的游戏。我想使用接口将其实现为类并将其用作创建新类的参数。
interface ObjectConstructor {
element: HTMLElement;
x_pos: number;
y_pos: number;
x_velocity: number;
y_velocity: number;
ele_width: number;
ele_height: number;
}
abstract class GameObject implements ObjectConstructor {
element: HTMLElement;
x_pos: number;
y_pos: number;
x_velocity: number;
y_velocity: number;
ele_width: number;
ele_height: number;
constructor(object: ObjectConstructor) {
this.element = object.element;
this.x_pos = object.x_pos;
this.y_pos = object.y_pos;
this.x_velocity = object.x_velocity;
this.y_velocity = object.y_velocity;
this.ele_width = object.ele_width;
this.ele_height = object.ele_height;
}
这在没有“实现”语句的情况下有效,但是当我添加它时,我得到与下面相同的错误。但是当我尝试使用接口变量制作单个对象时出现问题。
//creating player when initialazing new Game instance.
init(): void {
this.objects.Player = new Player(PlayerPrototype); //Player inherits from GameObject
}
}
let PlayerPrototype: ObjectConstructor = {
element: document.createElement("div"),
x_pos: Game.bodyWidth/2-30,
y_pos: Game.bodyHeight-50,
x_velocity: Game.properites.player_speed,
y_velocity: Game.properites.player_speed,
ele_width: 30,
ele_height: 50
};
我从编译器得到这个错误: 类型 '{ 元素:HTMLDivElement; x_pos:数字; y_pos:数字; x_velocity:数字; y_velocity:数字; ele_width:数字; ele_height:数字; }' 缺少类型“ObjectConstructor”的以下属性:prototype、getPrototypeOf、getOwnPropertyDescriptor、getOwnPropertyNames 等 18 个。
我应该使用'Partial'语句还是使用'type'而不是'interface'?
【问题讨论】:
标签: typescript