gpt4 book ai didi

javascript - 扩展 javascript "class"(对象)

转载 作者:行者123 更新时间:2023-11-30 18:02:00 25 4
gpt4 key购买 nike

我正在使用一个 javascript 库(具体来说是 pixi.js),我正在尝试在 typescript 中扩展其中一个类。但是,尝试像下面这样扩展类会产生错误。

module tilesystem {

declare var PIXI;
// Class
export class Tilegrid PIXI.DisplayObjectContainer
{
public layers : number= layers;
public rows : number= rows;
public columns : number = columns;
public tilesize : number = tilesize;
// Constructor
constructor(layers, columns, rows, tilesize, stage, texture)
{
super( );
//implementation
}
}

//Tilegrid.constructor = Tilegrid;
Tilegrid.prototype = Object.create(PIXI.DisplayObjectContainer.prototype);

}

错误:

Base type 'any' lacks an implementation.

我可以用丑陋的 javascript 方式扩展它,但那样它仍然会提示不知道它是 super 方法。

module tilesystem {

declare var PIXI;
// Class
export class Tilegrid
{
public layers : number= layers;
public rows : number= rows;
public columns : number = columns;
public tilesize : number = tilesize;
// Constructor
constructor(layers, columns, rows, tilesize, stage, texture)
{
**PIXI.DisplayObjectContainer.call(this);**
*this.addChild( new Tile() );* //throws an error, because addChild is not known
}
}

**Tilegrid.prototype = Object.create(PIXI.DisplayObjectContainer.prototype);**

}

How to extend native JavaScript array in TypeScript我知道这个 anwser 建议使用一个接口(interface),但我真的很想防止编写包装器。我更愿意找到一种方法来抑制使用 super 方法时的错误,或者以某种方式从 javascript 类获取类型信息。

最佳答案

你的第一个代码块只做了几个小改动就对我有用。

这是我所做的:从 https://github.com/GoodBoyDigital/pixi.js/blob/master/bin/pixi.dev.js 下载 Pixi 库;从 https://github.com/xperiments/Pulsar/blob/master/src/libs/pixi.d.ts 下载声明文件;从源代码中删除了 declare var PIXI;,添加了关键字 extends 和一个知道它有效的警报,所以它看起来像这样:

/// <reference path="pixi.d.ts" />

module tilesystem {
export class Tilegrid extends PIXI.DisplayObjectContainer {
public layers: number = layers;
public rows: number = rows;
public columns: number = columns;
public tilesize: number = tilesize;
constructor(layers, columns, rows, tilesize, stage, texture) {
super();
alert("I ran");
}
}
}

var x = new tilesystem.Tilegrid(null, null, null, null, null, null);

然后我在一个包含 pixi.js 的 html 文件中对其进行了测试,自定义代码之前,如下所示:

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>TypeScript HTML App</title>
<link rel="stylesheet" href="app.css" type="text/css" />
</head>
<body>
<script src="pixi.dev.js"></script>
<script src="output.js"></script>
</body>
</html>

我不确定您的问题是否出在缺少引用声明文件、缺少 extends 关键字或您如何在 html 中包含 js 文件,但这些步骤中的某些内容应该有所帮助。

关于javascript - 扩展 javascript "class"(对象),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16737920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com