首页 > 解决方案 > 如何为类和单个对象制作模板?

问题描述

我用打字稿做简单的游戏。我想使用接口将其实现为类并将其用作创建新类的参数。

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
};

我从编译器收到此错误: Type '{ element: HTMLDivElement; x_pos:数字;y_pos:数字;x_velocity:数字;y_velocity:数字;ele_width:数字;ele_height:数字;}' 缺少类型“ObjectConstructor”的以下属性:prototype、getPrototypeOf、getOwnPropertyDescriptor、getOwnPropertyNames 等 18 个。

我应该使用'Partial<>'语句还是使用'type'而不是'interface'?

标签: typescript

解决方案


您遇到的问题ObjectConstructor是本机打字稿类

cf:对象构造器

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


推荐阅读