typescript Promise with Angular不能赋值给类型ts2322 [closed]

w8f9ii69  于 2023-04-07  发布在  TypeScript
关注(0)|答案(2)|浏览(161)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
9小时前关闭
Improve this question
我尝试在Angular中登录,但我得到promises的错误。“Type 'Promise〈ApiResponse|“undefined〉”不能分配给类型“Promise〈ApiResponse〉”。ts2322

login(user?:string, password?:string):Promise<ApiResponse<User>> {
      return new Promise((resolve) =>  {
        let promise:Promise<ApiResponse<UserLogged>>;
        if (user && password)                           //me estoy logueando
          promise=this.http.post<ApiResponse<UserLogged>>(this.baseUrl + "login", {user: user, password: password}).toPromise();
        else                                            //valido si ya tengo sesion activa en el server
          promise=this.http.get<ApiResponse<UserLogged>>(this.baseUrl + "login").toPromise();
        //proceso respuesta
  
      });
      
    }

apireresponse.ts

export interface ApiResponse<T> extends BaseDTO{
  status: number;
  message?: string;
  data?: T
}

baseDTO

export interface BaseDTO { 
}

Can someone explain to me what I am doing wrong.

Sorry my English is poor

thank you

用户

export interface User extends BaseIdDTO{
  user:string;
  password?:string;
  mail:string;
  name?:string

tsconfig.json中将“strict:true”改为“strict:“假”,错误消失。

twh00eeo

twh00eeo1#

ok,我谢谢你的建议,我是初学者,我会研究如何用observable来做

zd287kbt

zd287kbt2#

从编写干净的代码开始?

login(user?: string, password?: string) {
  if (user && password) return this.http.post(this.baseUrl + 'login', { user, password }).toPromise();
  else return this.http.post(this.baseUrl + 'login').toPromise();
}

此外,你真的应该使用可观的,使用承诺是一个降级。

相关问题