这段typescript类型定义如何能优化的更简洁?

hzrWeb
  • 1.2k

login登陆有三种,通过小程序code登陆、通过用户名密码登陆、通过email和密码登陆。

export namespace ILogin {
  export interface WeApp {
    code: string;
  }
  export interface Web {
    username: string;
    password: string;
  }
  export interface Web1 {
    email: string;
    password: string;
  }
}

type LoginParam = ILogin.WeApp | ILogin.Web | ILogin.Web1;

export default class User extends Service {
  public async login(params: LoginParam): Promise<any> {
    console.log(params);
  }
}
回复
阅读 733
2 个回答

写三个 login 方法就好了,因为这三种场景处理的逻辑是不相同的,耦合在一起才会更麻烦

用泛型就好了

async login(parmas: WeApp): Promise<any>
async login(parmas: Web): Promise<any>
async login(parmas: Web1): Promise<any>
async login(params: any): Promise<any> {
// 判断参数类型
console.log(params)
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏