我有这个简单的模块,该模块导出一个函数,该函数返回ChildProcess的实例。问题是我不知道如何添加返回类型信息,因为我不知道如何获得对ChildProcess类的引用。

//core
import * as cp from 'child_process';
import * as path from 'path';

//project
const run = path.resolve(__dirname +'/lib/run.sh');

export = function($commands: Array<string>, args?: Array<string>) {

    const commands = $commands.map(function(c){
          return String(c).trim();
    });

    return cp.spawn(run, (args || []), {
        env: Object.assign({}, process.env, {
            GENERIC_SUBSHELL_COMMANDS: commands.join('\n')
        })
    });

};

如果您查看Node.js文档,则说cp.spawn()返回ChildProcess类的实例。

如果您在这里看:
https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/node/index.d.ts

我们看到ChildProcess类的类型定义:
https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/node/index.d.ts#L1599

但是,我对如何在TypeScript代码中引用它感到困惑。

我不认为我应该导入@types/node,因为这应该是devDependency。

我应该做些什么?

我需要做类似的事情:
export = function($commands: Array<string>, args?: Array<string>): ChildProcess {

}

最佳答案

看来ChildProcesschild_process模块下,因此您应该可以在现有的导入中引用它:

import * as cp from 'child_process';

export = function($commands: Array<string>, args?: Array<string>): cp.ChildProcess {
  //...
}

09-25 19:57