2016-09-27 91 views
2

我在創建現有模塊的聲明文件時出現問題。TypeScript爲可以實例化的模塊寫入d.ts文件

當使用JavaScript語法使用導入模塊:

var Library = require('thirdpartylibs'); 
var libInstance = new Library(); 

我創建d.ts文件名爲thirdpartylibs.d.ts,並添加以下內容:

declare module 'thirdpartylibs'{ 
    export class Library{} 
} 
index.ts文件

import * as Library from 'thirdpartylibs' 
let libInstance = new Library() // <--- error here 

好像我應該做的let libInstance = new Library.Library()使其工作,但它會在生成的JS上失敗。

有人嗎?

回答

5

試試這個

declare module 'thirdpartylibs'{ 
    class Library { 
     ... 
    } 
    export = Library 
} 

要導入

import Library = require('thirdpartylibs') 
const libInstance = new Library() 

注:這使得Library出口。您使用的語法是「命名導出」

+0

感謝您使用您的解決方案進行回覆我已將'Module''thirdpartylibs''解析爲非模塊實體,並且無法使用此構造導入。任何線索? – kulaka

+0

嘗試'import library = require('thirdpartylibs')'。 (注意:'import',而不是'const',應該有可用的類型) –

+0

@kulaka編輯了我的答案(儘管'import * as ...'似乎不適用於TS 2.0,而不是1.8) –