打字稿,新的Promise对象的类型是什么?

时间:2020-10-11 09:33:51

标签: javascript typescript types promise

在TS中,我有一个类似的功能:

function a() : FOO {
  return new Promise((resolve, reject) => {
    //omitted
  })
}

FOO上写什么类型合适? 只说Promise<any>好吗?

在函数a中显示我返回的内容的更多细节也许会有所帮助:

new Promise((resolve, reject) => {
    const cmd = spawn(str, null, { shell: true });

    cmd.stdout.on("data", (data) => {
        //just logging
    });

    cmd.stderr.on("data", (data) => {
      return reject(data);
    });

    cmd.on("error", (error) => {
      return reject(error);
    });

    cmd.on("close", (code) => {
      return resolve(code);
    });
  });

1 个答案:

答案 0 :(得分:1)

这完全取决于承诺的实现值是哪种类型。例如,如果诺言将用number来实现,则类型将为Promise<number>。例如:

function a() : Promise<number> {
    return new Promise((resolve, reject) => {
        doSomeCallbackBasedThing((err: Error | null, result: number) => {
            if (err) {
                reject(err);
            } else {
                resolve(result);
            }
        });
    })
}

如果通过undefined通过resolve()不带任何参数来实现它,通常您会写成Promise<void>

通常,您根本不必显式地编写类型; TypeScript通常可以从函数中的代码推断出来。


进行编辑:您将使用Promise<x>,其中x是在code事件的处理程序中收到的close参数的类型。