【问题标题】:Add return type to a signature in typescript将返回类型添加到打字稿中的签名
【发布时间】:2021-10-21 00:33:52
【问题描述】:

我是否在签名中正确添加了返回类型?

添加前:

export const sendEmail = async (
  mailOptions: MailOptions
) => {
  await smtpTransport.send(mailOptions);
};

添加后:

export const sendEmail = async (
  mailOptions: MailOptions
) => {
  return await smtpTransport.send(mailOptions);
};

或者我需要通过 Promise 来做?

【问题讨论】:

  • 函数签名的返回类型如下所示:smtpTransport.sendMail(mailOptions: string): string ( : type 在末尾)。我想你的意思是另一回事?

标签: reactjs typescript


【解决方案1】:

the docs 中,方法send 的返回类型为void。这向我表明,您的 await 似乎是同步的,因此将无效。

您可以通过callback: (err: Error | null, info: SentMessageInfo) => void,您可以使用它来创建一个与this answer shows 非常相似的异步函数 - 或者直接使用它(可能是最好的)。

如果它是异步的,那么它会返回一个Promise<void>,有或没有你的返回或异步包装器:

export const sendEmail = async (
  mailOptions: MailOptions
): Promise<void> => {
  return await smtpTransport.send(mailOptions);
};

或者

export const sendEmail = (
  mailOptions: MailOptions
): Promise<void> => {
  return smtpTransport.send(mailOptions);
};

或者

export const sendEmail = async (
  mailOptions: MailOptions
): Promise<void> => {
  await smtpTransport.send(mailOptions);
};

注意函数的类型签名。

【讨论】:

  • 第一个代码也会返回Promise&lt;void&gt;
  • 你说得对,我已经有一段时间没有做 ts 了。我会更新我的答案。谢谢你
猜你喜欢
  • 2020-06-29
  • 2018-04-23
  • 1970-01-01
  • 1970-01-01
  • 2021-09-18
  • 2022-01-12
  • 1970-01-01
  • 1970-01-01
  • 2015-08-10
相关资源
最近更新 更多