Javascript 省略对象';如果值==null,则为s键值

Javascript 省略对象';如果值==null,则为s键值,javascript,typescript,Javascript,Typescript,下面显示的typescript代码在Firestore数据库中创建了新记录,如果值等于null,是否可以省略(通过写入一行内联代码)一个键值对 firestore.doc(`users/${user.uid}`).set({ email: user.email, name: user.displayName, phone: user.phoneNumber, // (user.phoneNumber ? phone: user.phoneNumber), ... ? cr

下面显示的typescript代码在Firestore数据库中创建了新记录,如果值等于null,是否可以省略(通过写入一行内联代码)一个键值对

firestore.doc(`users/${user.uid}`).set({
   email: user.email,
   name: user.displayName,
   phone: user.phoneNumber, // (user.phoneNumber ? phone: user.phoneNumber), ... ?
   createdAt: firebase.firestore.FieldValue.serverTimestamp(),
});

您可以使用对象销毁和三元表达式来执行此操作:

firestore.doc(`users/${user.uid}`).set({
电子邮件:user.email,
名称:user.displayName,
…(user.phoneNumber?{phone:user.phoneNumber}:未定义),
createdAt:firebase.firestore.FieldValue.serverTimestamp(),
});
它不是很优雅,但它在一行中完成了它的工作:

const phone=null;
常量对象={
名字:“爱丽丝”,
年龄:24岁,
…(电话?{phone}:未定义),
};

控制台日志(obj)不在对象文本中。语法
phone:user.phoneNumber?user.phoneNumber:undefined
确实可以编译,但不幸的是,在应用时没有创建数据库记录此解决方案似乎工作正常,因为数据库中的记录是按预期创建的。我只是想知道有没有更优雅的语法方法来解决这个问题?谢谢你指出答案