2016-05-04 29 views
0

我正在尋找下面的JS,這是我在創建.d.ts文件的許多項目中的一個。Typescript定義。命名函數表達式(NFE)

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

在谷歌to here一個搜索告訴我,這是一個Named Function Expression (NFE),但我開始迷失。該模塊增加了額外的困惑。

如何正確定義這個?這個名字是一個怪物(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

你在這裏有一個類 - 它的目的是用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; 
+0

衛生署!再次感謝你瑞恩。 – Clark

相關問題