簡體   English   中英

在 Typescript 中承諾 function “類型 void 不可分配……”

[英]Promises function in Typescript “type void is not assignable …”

我剛剛開始使用 Typescript。 如果不欺騙 Typescript 系統並使用any類型,我似乎無法解決的一個問題如下:

我有一個返回 promise 的 function:

  saveExpirableToken(tokenField: string, tokenExpiresField: string, tokenExpiresAt: Date) {
    return new Promise<UserDocument>((resolve, reject) => {
      this.generateResetToken((err: Error, resetToken: string) => {
        if (err) { reject(err) }

        this[tokenField] = resetToken
        this[tokenExpiresField] = tokenExpiresAt
        resolve(this.save())
      })
    })
  },

我在其他地方調用以下

    let winningUser: UserDocument = await randomUser.saveExpirableToken(
      'wonEverythingToken',
      'wonEverythingTokenExpires',
      moment().add(1, 'year').toDate() // add one year as expiration to claiming prize
    )

我得到的 Typescript 錯誤是: Type 'void' is not assignable to type 'UserDocument'

我的 function 聲明缺少什么? 以及如何使用 Typescript 處理 Promise,以便我可以告訴 Typescript, winningUser實際上是UserDocument類型

** 編輯 **

  generateResetToken(callback: (err: Error | null, token?: string) => Promise<UserDocument>) {
    const byteSize = 16
    crypto.randomBytes(byteSize, (err, resetToken) => {
      if (err) { callback(err) }

      callback(null, resetToken.toString('hex'))
    })
  },

請查看this.save()方法的類型定義,它似乎不返回UserDocument而是返回void

我創建了一個游樂場鏈接,它表明您的其他類型定義工作正常: 鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM