打字稿定义。命名函数表达式(NFE)

时间:2016-05-04 21:01:52

标签: typescript

我正在查看以下JS,这是我为项目创建.d.ts文件的众多项目之一。

BatchBuffer.js

var Buffer = function(size)
 {

     this.vertices = new ArrayBuffer(size);

     /**
      * View on the vertices as a Float32Array for positions
      *
      * @member {Float32Array}
      */
     this.float32View = new Float32Array(this.vertices);

     /**
      * View on the vertices as a Uint32Array for uvs
      *
      * @member {Float32Array}
      */
     this.uint32View = new Uint32Array(this.vertices);
 };

 module.exports = Buffer;

 Buffer.prototype.destroy = function(){
   this.vertices = null;
   this.positions = null;
   this.uvs = null;
   this.colors  = null;
 };

在Google上搜索to here告诉我这是Named Function Expression (NFE),但我开始迷路了。该模块正在增加额外的混乱。

如何正确定义?该名称是一个bugbear(BatchBufferBuffer),这看起来准确吗?

export module BatchBuffer {

    export var vertices: ArrayBuffer;
    export var float32View: number[];
    export var uint32View: number[];

    export function destroy(): void;

}

我一直在打这些类似的NFE文件,所以为了我的定义准确,我觉得我需要建议或确认。

感谢。

编辑。

见Ryan的答案。

项目中的大多数其他类看起来(类似!)这个伪例如:

MyClass.js

function MyClass(something)
{
    /**
     * Some property
     *
     * @member {number}
     */
    this.something = something;
}

MyClass.prototype.constructor = MyClass;
module.exports = MyClass;

MyClass.prototype.hi = function ()
{
}

我将意义分配给看似相同的东西。虽然细节让我失望。要知道这是一个适合我的课程。

1 个答案:

答案 0 :(得分:1)

你在这里有一个类 - 它打算用new实例化(你可以告诉它因为它为prototype的属性赋值),它有属性和方法

您的文件应如下所示:

declare class Buffer {
  constructor(size: number);

  vertices: ArrayBuffer;
  float32View: Float32Array;
  uint32View: Float32Array;

  uvs: any; // not sure of type
  colors: any; // not sure of type
  positions: any; // not sure of type

  destroy(): void;
}

// expresses "module.exports = Buffer"
export = Buffer;