微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用打字稿访问 AWS SQS SendMessageResult 中的 $response 属性?

如何解决如何使用打字稿访问 AWS SQS SendMessageResult 中的 $response 属性?

我正在用打字稿向 SQS 队列发送消息,如下所示:

const queueName = 'some_queue_name';
const foo = 'foo';
const bar = 'bar';

const sqs = new AWS.SQS();
const SendMessageRequest: AWS.SQS.SendMessageRequest = {
  MessageBody: JSON.stringify({ foo,bar }),QueueUrl: queueName,};

try {
  const request = sqs.sendMessage(SendMessageRequest,function (err,data) {
    if (err) {
      console.log('Error',err);
    } 
  });

  const smgResponse: SendMessageResult = await request.promise();

} catch (err) {
  console.log(err);
  expect(err).toBeUndefined();
}

在运行时,SendMessageRequest 显示一个 $response 属性,但这在对象定义中不可见。在运行时访问此属性的最佳方法是什么?

解决方法

使用 type assertion

const smgResponse = await request.promise() as SendMessageResult & {$response: unknown}

unknown 替换为运行时的任何类型 $response

如果你做了很多断言,你可以为此创建一个新类型:

interface SendMessageResultWithResponse extends {
  $response: unknown
}

// alternatively type SendMessageResultWithResponse = SendMessageResult & {$response: unknown}

const smgResponse = await request.promise() as SendMessageResultWithResponse

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。