排除或删除方法获取TypeScript

时间:2018-12-21 16:05:25

标签: typescript

我想排除或删除类中的方法,例如

export class User {

  password: string;

  public setPassword(password: string): void {
   this.password= password;
  }

  // exclude or remove
  public getPassword(): string {
   return this.password;
  }
}

我不想将此数据发送到Firebase数据库

3 个答案:

答案 0 :(得分:0)

从实例中摆脱方法的一般方法是使用JSON解析器,这将导致仅保留属性...

const user = new User();
user.password = 'test';

const propsOnly = JSON.parse(JSON.stringify(user));

这将导致一个对象具有一个password属性并且没有任何方法-JSON解析器比我们自己编写的东西更健壮。对于将来添加到User类的方法,此技巧也很可靠。

如果您要向API发送JSON数据,则不需要这样做,因为序列化仍然会删除方法。

答案 1 :(得分:0)

仅对自己使用getPassword的一种方法是仅让您知道其引用。

const GET_PASSWORD = Symbol();

export class User {
  private password: string;

  constructor(password: string) {
    this.password = password;
  }

  public setPassword(password: string): void {
   this.password= password;
  }

  public [GET_PASSWORD](): string {
   return this.password;
  }
}

const password = new User('foo')[GET_PASSWORD]()

只有有权访问GET_PASSWORD符号的用户才能调用该方法。

虽然这不是最优雅的方法,但是将您的类包装到另一个类中(这一次没有吸气剂)可能很有意义。

答案 2 :(得分:0)

我对Firebase并不熟悉,但我怀疑您的担心是错误的。即使没有,删除方法也几乎无济于事。

但是,如果您确实要删除方法,则可以通过以下方式完成:

let user = new User()
delete user.getPassword

但是,如果您想从对象实例中删除密码,则应该执行以下操作:

let user = new User()
user.password = ''