我是Ramda和函数式编程的新手,我想知道有人将如何改进下面的代码或将其转换为自由点样式
const doc = {
passwordRecovery: {
requested: true,
expiresAt: new Date(Date.now() + 1000).toISOString(),
code: 'abc'
}
}
const req = {
password: '123',
passwordRecovery: {
code: 'abc'
}
}
const pathCode = R.path(['passwordRecovery', 'code'])
const isValidCode = R.curry(
(doc, req) => R.all(
R.hasPath(['passwordRecovery', 'code'], req),
R.pathEq(['passwordRecovery', 'requested'], true, doc),
R.compose(R.complement(R.isNil), pathCode)(doc),
R.equals(pathCode(req), pathCode(doc)),
R.pipe(
R.path(['passwordRecovery', 'expiresAt']),
Date.parse,
R.gte(R.__, Date.now()),
)(doc)
)
);
isValidCode(doc)(req)
Run Code Online (Sandbox Code Playgroud)