Tengo muchas funciones ejemplo como este
function update() { if (isAdminUser()) { return false; } ... } function get() { if (isAdminUser()) { return false; } ... } ...¿Hay alguna manera posible de tener la declaración condicional?
if (isAdminUser()) { return false; })escrito una vez y ejecutado por sí mismo al comienzo de cada función. estoy usando javascript
Podría usar una función de orden superior para encapsular la lógica necesaria para ejecutar antes de que se ejecute una función específica. Las funciones de orden superior toman funciones como parámetros, por lo tanto, una posible solución a su problema podría verse así:
function withIsAdminUser(callback) { return function() { if (isAdminUser()) { return false; } return callback(); } } function getRaw() { // Do something here, this whole function could also be inlined } const get = withIsAdminUser(getRaw);Si usa TypeScript, pruebe los decoradores.
Documentos: https://www.typescriptlang.org/docs/handbook/decorators.html#decorators
tal vez pueda definir una función que pueda aceptar otra función como argumento y devuelva falso si esa función (es decir, isAdminUser en su fragmento de código) devuelve verdadero
const checkUser = func => func() && falseentonces la función se puede usar como:
function update() { if (checkUser(isAdminUser)) { // update() logic will only run if user is not admin } } function get() { if (checkUser(isAdminUser)) { // get() logic will only run if user is not admin } }