在TypeScript文件中导入AMD JS库

时间:2015-11-03 14:33:27

标签: module requirejs typescript amd

我坚持使用正确的方法将AMD JavaScript库(https://github.com/dcodeIO/bytebuffer.js)导入TypeScript文件。

我找到了它 - 不是最新的 - 类型定义(https://github.com/SINTEF-9012/Proto2TypeScript/commit/0889dccbf6048f116551a73e77d75dd83553cfe6),但实际上我找不到使用它的方法并且让RequireJS加载了库。

这是我正在使用的代码:

/// <amd-dependency path="Scripts/bytebuffer" />
var ByteBuffer = require( 'Scripts/bytebuffer' );

import protocols = require( 'protocols' );

export class Pippo
{
    readPayload( payload: ArrayBuffer, ECType: string ): any
    {
        var ECStruct = new protocols.ECStruct( ECType );

        var bb = new ByteBuffer()
            .writeIString( "Hello world!" )
            .flip();
        console.log( bb.readIString() + " from bytebuffer.js" );
    }
}

正确加载了两个模块协议 bytebuffer ,但实际上我在Visual Studio中看不到实例 bb 的成员。如果我把线

/// <reference path="scripts/typings/bytebuffer/bytebuffer.d.ts" />

并发表评论     // var ByteBuffer = require('Scripts / bytebuffer'); 当然我可以看到 bb 的方法和属性,但是模块没有在运行时加载。

是否可以通过 RequireJS 加载 ByteBuffer.js 并可以在VS中查看其成员?

由于

1 个答案:

答案 0 :(得分:1)

声明外部模块的接口有一种语法:

declare module 'amd/module/name' {
    // module definition, probably with:
    exports = thingToExport;
}

在你的情况下,应该是:

declare module 'Scripts/bytebuffer' {
    exports = ByteBuffer;
}

把它放在bytebuffer.d.ts文件之后!!! 另见&#34;写.d.ts文件&#34;在handbook

就我而言,/// <amd-dependency>/// <reference>内容也是多余的 - 您可能也想尝试一下,以简化代码。