仅在需要时返回自定义承诺 - 我做错了什么



我正在尝试编写一个仅在需要时返回自定义承诺的函数。代码如下所示:

login(sp: ServerProfile): Promise<any> {
    return this.logout(sp) // first logout
    .then(_ => {
        if (this.isAuthEnabled(sp)) {
          return this._login(sp) // if yes, re-login
          .then(succ => { this.utils.debug(`Logged in with: ${succ}`); this._isLoggedIn = true; })
        }
        else {
          this._isLoggedIn = true;
          return new Promise ( (resolve, reject ) => {resolve(true)}) //-> problem
        }
      })
  }

我知道我可以将整个函数包装在一个new Promise (resolve, reject)中,但我不想不必要地包装this._login因为它返回一个承诺。

如果我在else{}部分添加new Promise,则会出现此错误:

[ts] 类型为 '(_: any) => 承诺 |Promise<{}>' 不是 可分配给类型为 '(值:任意) => void | 答应"。

啊,解决方案似乎是在手工制作的承诺中指定<any>

  return new Promise <any>( (resolve, reject ) => {resolve(true)}) //-> no problem