Estoy usando la función de plantilla para lodash y quiero que lodash arroje un error si la propiedad del objeto anidado no existe, pero parece que la función solo verifica las propiedades en el objeto inicial que pasa.
try { const config = `Hey <%- customer.firstName %> <%- customer.lastName %>, How are you?`; const res = template(config)({ customer: { firstName: "Bill", }, product: { name: "brush", price: "$9.99" } }); } catch(e) { console.log(e) } El código anterior devuelve Hey Bill, How are you?
No arroja un error cuando intento usar la variable de apellido aunque no existe en el cliente. ¿Hay alguna forma de hacer que lodash verifique los objetos anidados cuando se usa la función de plantilla?
No debería arrojar un error, porque está compilando la variable en _.escape(undefined) que devuelve una cadena vacía.
Debería arrojar un error si intenta customer.lastName.anotherProp .
Puede arrojar explícitamente un error, si lo desea, con delimitadores de evaluación:
try { const config = `Hey <%- customer.firstName %> <% if (!customer.lastName) { throw 'Object property is not defined!' } else { %><%- customer.lastName %><% } %>, How are you?`; const res = lodash.template(config)({ customer: { firstName: "Bill", }, product: { name: "brush", price: "$9.99" } }); } catch(e) { console.log(e) }