我想排除或删除类中的方法,例如
export class User {
password: string;
public setPassword(password: string): void {
this.password= password;
}
// exclude or remove
public getPassword(): string {
return this.password;
}
}
我不想将此数据发送到Firebase数据库
答案 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 = ''