对TypeScript类型的ChildProcess类的引用

问题描述 投票:2回答:2

我有这个简单的模块,它导出一个返回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 {

}
javascript node.js typescript typescript2.0
2个回答
3
投票

它看起来像ChildProcesschild_process模块下,所以你应该能够用你现有的导入引用它:

import * as cp from 'child_process';

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

1
投票

对我而言,它有所改变

import { spawn } from 'child_process';

import { ChildProcess, spawn } from 'child_process';

这摆脱了错误:

错误TS4023:导出的变量'readGitTags'已经或正在使用来自外部模块“child_process”的名称'ChildProcess',但无法命名。

© www.soinside.com 2019 - 2024. All rights reserved.