我坚持使用正确的方法将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中查看其成员?
由于
答案 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>
内容也是多余的 - 您可能也想尝试一下,以简化代码。