【问题标题】:How to make template for class and individual object?如何为类和单个对象制作模板?
【发布时间】: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


    【解决方案1】:

    您遇到的问题是 ObjectConstructor 是一个原生 typescript 类

    c.f.:ObjectConstructor

    尝试将您的界面命名为 GameObjectConstructorParameters 之类的其他名称

    【讨论】:

      猜你喜欢
      • 2013-08-24
      • 2021-07-26
      • 1970-01-01
      • 1970-01-01
      • 2013-07-09
      • 1970-01-01
      • 2018-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多