我正在查看以下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(BatchBuffer
或Buffer
),这看起来准确吗?
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 ()
{
}
我将意义分配给看似相同的东西。虽然细节让我失望。要知道这是一个适合我的课程。
答案 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;