2015-11-03 58 views
0

我一直堅持用正確的方式將一個AMD JavaScript庫(https://github.com/dcodeIO/bytebuffer.js)導入到TypeScript文件中。在TypeScript文件中導入AMD JS庫

我發現它的 - 不是最新的類型定義(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"); 
    } 
} 

兩個模塊協議字節緩衝區正確加載,但實際上我無法看到的實例BB的成員在Visual Studio。如果我放線

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

和評論 // VAR字節緩衝區=需要( '腳本/字節緩衝區'); 當然我可以看到bb的方法和屬性,但該模塊在運行時不會被加載。

有沒有辦法有ByteBuffer.js通過RequireJS裝載看到它在VS成員的可能性?

感謝

+0

我正在通過這個自己的Angular2的最新版本。我試圖包括一個基於AMD的JavaScript庫(沒有npm),我花了不尋常的時間讓它工作。真正令人驚訝的是,很少有信息能夠正確地做到這一點 - 所有東西都像是黑客攻擊,並且使用SystemJS等做了一些假設。我確實從Typescript找到了這個頁面,但我仍然不在那裏。也許它會幫助你。 https://www.typescriptlang.org/docs/handbook/migrating-from-javascript.html – henry74

回答

1

有宣告外部模塊的接口語法:

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

在你的情況下,也許應該是:

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

字節緩衝區後,將這個。 d.ts文件!另請參閱handbook中的「寫入.d.ts文件」。

在我的情況下,/// <amd-dependency>/// <reference>的東西也是多餘的 - 您可能也想嘗試一下,以簡化您的代碼。

相關問題