TypeScript - NodeJS 模块的类型注解

TypeScript - type annotation for NodeJS module

在我现在正在处理的 NodeJS 项目中,我们使用依赖注入,以及自定义编写的实例 类 我们过去常常传递 fs、[=13= 等模块], http 和其他作为构造函数的参数。

现在我们想使用带有 DefinitelyTyped 库的 TypeScript 来支持 NodeJS 类型。对于 NodeJS 模块,我不清楚如何在 TypeScript 中描述模块的类型定义?

示例:

class ReportWriter {
    private fs: ???;
    constructor (fs: ???) { //what should I use instead of ???
        this.fs = fs;
    }
}

我可以创建一个类型别名(或者一个接口):

type NodeFsModule = { 
    readFile: Function, 
    readFileSync: Function 
};

但这需要我描述大量的功能。还有其他选择吗?

只需将 importtypeof 一起使用:

import fs = require('fs');
class ReportWriter {
    private fs: typeof fs;
    constructor (fs: typeof fs) {
        this.fs = fs;
    }
}

更多信息:https://basarat.gitbooks.io/typescript/content/docs/project/declarationspaces.html