angular - Typescript Omit 属性不适用于“as”关键字
问题描述
在注册期间,两个属性都需要,但之后不需要密码。这个想法是,对于注册和身份验证,系统将使用 firebase 内置函数,但系统将存储在 firebase 用户集合中的所有其他内容。
我的问题是,当我有两种类型的用户(一种用于注册,一种用于一般类型)时:
export interface RegistrationUser extends firebase.UserInfo {
email: string;
password: string;
}
export type User = Omit<RegistrationUser, 'password'>;
registerUser(user: RegistrationUser) {
this.auth.createUserWithEmailAndPassword(user.email, user.password).then(()=> {
let newUser = user as User;
// save user prop to firebase user collection
this.collection.add(newUser);
});
}
尽管有 'as' 关键字,该password
属性仍然保存。如何设置不将密码保存到用户集合?
谢谢
解决方案
当您执行此类操作时,Typescript 并没有真正删除该属性。它仅用于静态分析类型的目的(Typescript 在运行时不存在)。要真正删除该属性,您需要执行以下操作:
const newUser: User = {email: user.email};
推荐阅读
- jenkins - 使用 XMLParser 在 jenkins 脚本中进行 xmlparsing
- ios - Xcode/iOS xctest - 找不到构建输入文件
- html - 如何使用 Excel 宏抓取嵌套在 Div id 中的 Table 类的第一列
- auto-update - 未来系统更新所需的安全模式
- python-3.x - 使用 Python 检索 S3 存储桶设置
- javascript - JS:编写一个具有多维数组输入的函数
- java - 如何在淡入淡出过渡后从 CSS 样式表中恢复按钮的原始颜色而不是 JButton?
- javascript - Javascript,CSS 在 Google Chrome Android 中不起作用
- php - PHP 在结果集关联数组中无法识别 SQLite3 字段名称
- pandas - 使用 for loop Pandas 创建新列