1

我正在使用一个 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);

}

错误 :

基本类型“任何”缺少实现。

我可以用丑陋的javascript方式扩展它,但是它仍然会抱怨不知道它是超级方法。

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);**

}

如何在 TypeScript 中扩展原生 JavaScript 数组 我知道这个 anwser 建议使用接口,但我真的很想阻止编写包装器。我宁愿找到一种方法来在使用超级方法时抑制错误,或者以某种方式从 javascript 类中获取类型信息。

4

1 回答 1

2

您的第一个代码块对我有用,只需进行一些小的更改。

这是我所做的:从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);

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

<!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>

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

于 2013-05-24T16:08:22.590 回答