DEV Community

Discussion on: The shortest way to conditional insert properties into an object literal

Collapse
 
kaptenadhoc profile image
Reply guy 🤷‍♂️ • Edited

Just make sure to internalize what JavaScript considers truthy and you won't think this is a "gotcha" anymore.

So in your specific case you'd probably want to do something like

const coins = 0;
const obj = {
  name: "John",
  ...typeof coins === "number" && !isNaN(coins) && {coins},
};
Enter fullscreen mode Exit fullscreen mode
Collapse
 
konrud profile image
Konstantin Rouda

AFAIK, this is considered as a bad practice to use typeof to check the number, as NaN is also has type number (e.g. typeof NaN === "number"; // -> true). Moreover, typeof when used against number will return number, as a result, in lower case (i.e. not Number but number).

Thread Thread
 
kaptenadhoc profile image
Reply guy 🤷‍♂️

Yeah the casing of number was just a typo. Adjusted it to check for NaN.