有一个看起来像这样的nodejs模块
module.exports = {
init(arg1) {
// ..
return this;
},
// ..
};
我正在尝试编写定义文件。看起来像这样
declare namespace ModuleName {
function init(smth: string): ModuleName;
}
export = ModuleName;
export as namespace ModuleName;
}
几乎可以正常工作。导入时
const a = require('ModuleName');
VSCode理解a.init
是一个接受一个字符串参数的函数。但是我不能理解结果也具有可以调用的方法init
。即
const b = a.init('smth');
b.init('smth2');
在这种情况下编写类型定义的正确方法是什么?
答案 0 :(得分:0)
我只能通过接口找到方法,但不确定。
declare namespace ModuleName {
interface IModuleName {
init(s: string): IModuleName;
}
function init(s: string): IModuleName;
}
const m = require('ModuleName');
const a = m.init('a');
const b = a.init('b');
或更短
interface ModuleName {
init(s: string): ModuleName;
}
const m: ModuleName = require('./ModuleName');
const a = m.init('a');
const b = a.init('b');