无法找出多个构造函数不允许的问题-需要初始化两个不同的构造函数以注册和更新配置文件页面

时间:2019-07-13 11:13:07

标签: typescript

我正在使用Angle&Typescript开发Ionic4应用程序。我有注册页面,带有更新配置文件按钮的编辑配置文件页面,该按钮会将PUT请求发送到API并更新配置文件。

所以,这是我的问题!

我有一个User.ts类,其中包含名字,姓氏和用户名等,并带有构造函数。在注册页面中,我将发送用户名以及所有其他详细信息。但是,在编辑配置文件页面形式中,用户不应编辑用户名字段。并且用户可以提供其他详细信息,例如中间名,备用电话号码等。

我有一个可以成功注册页面的用户构造函数。现在,我陷入了如何具有多个构造函数来实现这两个功能的困境。

我什至尝试使用User和更新的用户两个单独的接口,并使用参数Obj调用构造函数: IUpdatedUser,但是我不知道如何检查接口和初始化各自的构造函数。下面是我的User类代码

export interface IUser {
  firstName: string;
  lastName: string;
  username: string;
  password: string;
  email: string;
  mobileNumber: string;
}

export interface IUpdateUser {
  firstName: string;
  middleName: string;
  lastName: string;
  password: string;
  email: string;
  phoneNumber: string;
  mobileNumber: string;
}

export class User implements User, UpdateUser {
  id: number;
  firstName: string;
  middleName: string;
  lastName: string;
  username: string;
  password: string;
  accountId: number = 0;
  email: string;
  phoneNumber: string;
  mobileNumber: string;

  // Sign up page construcor
  constructor(firstName, lastName, username, password, email, mobileNumber) {
    this.username = username;
    this.password = password;
    this.email = email;
    this.firstName = firstName;
    this.lastName = lastName;
    this.mobileNumber = mobileNumber;
  }

  // Need generalized or overloaded constructor
  // constructor(obj: IUser | IUpdatedUser) {
  // I need to check type of interface and intialize respective constructor

  // if(typeOf obj === IUser) {
  //Initialize sign up constrcutor
  // } else {
  // Initialize update profile construcor
  // }
}

两个不同的构造函数签名或初始化,用于注册和更新概要文件功能。请帮我解决一下这个。预先感谢!

0 个答案:

没有答案