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

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);
  }
}
阅读 1.8k
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)
}
推荐问题