2016-05-04 3 views
0

Я рассматриваю следующий JS, который является одним из многих в проекте. Я создаю файл .d.ts.Определение машинописных имен. Именованное выражение функции (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; 
}; 

Поиск на 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, поэтому, чтобы мое определение было точным, я считаю, что мне нужен совет или подтверждение.

Спасибо.

Отредактировано.

См. Ответ Райана.

Большинство других классов в проекте выглядел (аналогично!) Этой псевдо, например:

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

Doh! Еще раз спасибо Райану. – Clark

Смежные вопросы