gpt4 book ai didi

javascript - 在 Typescript 中如何在绑定(bind)类型安全的同时 promise 一个函数?

转载 作者:行者123 更新时间:2023-11-30 08:22:04 25 4
gpt4 key购买 nike

考虑以下 promise :

import { S3 } from 'aws-sdk'
import { promisify } from 'util'

const s3 = new S3({ apiVersion: '2006-03-01' })
const getObject = promisify<S3.GetObjectRequest, S3.GetObjectOutput>(
s3.getObject
)

这工作正常,除了你会得到像 TypeError: this.makeRequest is not a function 这样的错误,因为 s3.getObject 现在绑定(bind)到错误的 这个范围。然而,这:

const getObject = promisify<S3.GetObjectRequest, S3.GetObjectOutput>(
s3.getObject.bind(s3)
)

破坏类型安全并会出错:Unsafe use of expression of type 'any'。(假设您使用严格模式)。

那么我怎样才能在 Typescript 中 promise 像 s3 的 getObject 这样的东西呢?

最佳答案

您可以传递另一个调用 s3.getObject() 的函数,而无需绑定(bind)它。使用箭头函数,您只需很少的额外代码即可完成此操作。

const getObject = promisify<S3.GetObjectRequest, S3.GetObjectOutput>(
name => s3.getObject(name)
)

但是,AWS 开发工具包运算符函数通常有一个返回 promise 的 .promise 方法,您不必手动 promise 。

s3.getObject(name).promise();

关于javascript - 在 Typescript 中如何在绑定(bind)类型安全的同时 promise 一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51883652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com