2015-06-19 40 views
0

我想爲random-string寫一個.d.ts。隨機串模塊的類型定義異常

我有這樣的代碼:

declare module "random-string" { 
    export function randomString(opts?: Object): string; 
} 

我能夠導入模塊沒有問題,然後用:

import randomString = require('random-string'); 

和調用:

console.log(randomString); // --> [Function: randomString] 

然而,這並未」不管參與或不參與:

console.log(randomString({length: 10}); 
console.log(randomString()); 

我得到這個錯誤從TSC:

錯誤TS2088:無法調用其類型缺乏調用簽名的表達式。

我看着在源隨機字符串,並發現此代碼爲方法,我試圖用接口:

module.exports = function randomString(opts) { 
    // Implementation... 
}; 

我設法寫.d.ts爲CSON模塊,沒問題,但那是直接導出'類'而不是函數。這很重要嗎?

回答

1

你的聲明是說有一個叫random-string與命名randomString內它的功能模塊...

所以您的使用情況應該是:

console.log(randomString.randomString({ length: 10 })); 
console.log(randomString.randomString()); 

如果模塊居然直接提供的功能,你應該調整你的定義做相同的:

declare module "random-string" { 
    function randomString(opts?: Object): string; 

    export = randomString; 
} 

這將允許你打電話給它,你在做你的 題。

+0

這很好。謝謝。 –