如何在TypeScript中安全地解构JavaScript对象
我想从JavaScript对象(如下)中提取属性,但我想保护自己不受对象为null或未定义以及不存在的属性的影响。也就是说,我希望这些值只是未定义的,没有JavaScript错误如何在TypeScript中安全地解构JavaScript对象,javascript,typescript,Javascript,Typescript,我想从JavaScript对象(如下)中提取属性,但我想保护自己不受对象为null或未定义以及不存在的属性的影响。也就是说,我希望这些值只是未定义的,没有JavaScript错误 const {id,username,userFirstName,userLastName} = attendeeResults; 您可以使用以下内容,请注意,我在attendee中省略了username,以表明它保留空值 const attenderesults={id:1,userFirstName:'John
const {id,username,userFirstName,userLastName} = attendeeResults;
您可以使用以下内容,请注意,我在
attendee
中省略了username,以表明它保留空值
const attenderesults={id:1,userFirstName:'John',userLastName:'Smith'}
常量对象={
id:null,
用户名:null,
userFirstName:null,
userLastName:null
};
分配对象(对象、结果);
控制台日志(obj)
您可以使用以下内容,请注意,我在与会者
中省略了username,以表明它保留空值
const attenderesults={id:1,userFirstName:'John',userLastName:'Smith'}
常量对象={
id:null,
用户名:null,
userFirstName:null,
userLastName:null
};
分配对象(对象、结果);
控制台日志(obj)代码>您可以使用逻辑运算符来实现这一点,如以下示例所示:
constnullobject=null;
常量{foo,bar}=nullObject | |{};
console.log(foo,bar)代码>您可以使用逻辑运算符来实现这一点,如以下示例所示:
constnullobject=null;
常量{foo,bar}=nullObject | |{};
console.log(foo,bar)代码>这可以通过以下方式完成:
const{id,username,…rest}={id:10,username:'u',firstname:'behzad',lastname:'besharati'};
日志(id、用户名、rest)代码>这可以通过以下方式完成:
const{id,username,…rest}={id:10,username:'u',firstname:'behzad',lastname:'besharati'};
日志(id、用户名、rest)代码>JavaScript允许您在解构对象时定义默认值。
例如:
const {id: 0,username:'',userFirstName:'',userLastName:''} = attendeeResults;
但是,如果AttendeResults
对象为null或未定义,则Destrunturing会引发错误。JavaScript允许您在解构对象时定义默认值。
例如:
const {id: 0,username:'',userFirstName:'',userLastName:''} = attendeeResults;
但是,如果AttendeResults
对象为null或未定义,则Destrunturing会抛出一个错误。这比我提出的更好,因为我不必声明所有内容,但我希望有一个更紧凑的解决方案。你可能应该创建一个类来表示你的用户模型,而不仅仅是实例化一个新的类并复制值(如果它们存在)。仅供参考,我没有对此投反对票。我欣赏所有的想法。我投了更高的票it@Pete谢谢,我猜?这比我想的要好,因为我不必声明所有内容,但我希望有一个更紧凑的解决方案。你可能应该创建一个类来表示你的用户模型,而不仅仅是实例化一个新类并复制值(如果存在)。仅供参考,我没有对此投反对票。我欣赏所有的想法。我投了更高的票it@Pete谢谢,我猜?如果对象上不存在属性,undefined
正是解构所能提供的,无需预防错误。如果对象上不存在属性,undefined
正是解构所能提供的,无需预防错误。“我希望值只是未定义的”。而不是0
或”
如果对象中不存在键,则析构函数将为您提供未定义的值,默认值用于防止未定义的值,但它是可选的。只有对null或未定义的对象进行析构函数时才会抛出错误。“我希望值只是未定义的。”“.Not0
或”
如果对象中不存在键,则析构函数将为您提供未定义的值,默认值用于防止未定义的值,但它是可选的。只有对null或未定义的对象进行反编译才会引发错误。OP不需要rest属性。OP不需要rest属性。