如何在解构不存在的密钥时抛出错误

A. *_*Lau 5 javascript ecmascript-6

所以我想解构一个对象,如果其中一个键不存在,它就会抛出一个错误。我试过一个,try catch但没有用。我想要一个替代方案if (variable === undefined)

let obj = {test : "test"}

try {
	let { test, asdf } = obj 
  console.log("worked")
}
catch (error) {
	console.error(error)
}
Run Code Online (Sandbox Code Playgroud)

gur*_*372 5

如果获取了不存在的属性,则使用代理抛出错误

let obj = {
  test: "test"
};

try 
{
    let { test, asdf} = getProxy(obj);
    console.log("worked");
} 
catch (error) 
{
    console.error(error)
}

function getProxy(obj) {
    return new Proxy(obj, { //create new Proxy object
        get: function(obj, prop) { //define get trap
            if( prop in obj )
            {
               return obj[prop];
            }
            else
            {
                throw new Error("No such property exists"); //throw error if prop doesn't exists
            }            
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

演示

let obj = {
  test: "test"
};

try 
{
    let { test, asdf} = getProxy(obj);
    console.log("worked");
} 
catch (error) 
{
    console.error(error)
}

function getProxy(obj) {
    return new Proxy(obj, { //create new Proxy object
        get: function(obj, prop) { //define get trap
            if( prop in obj )
            {
               return obj[prop];
            }
            else
            {
                throw new Error("No such property exists"); //throw error if prop doesn't exists
            }            
        }
    });
}
Run Code Online (Sandbox Code Playgroud)