我想使用ramda.js函数而不键入 R.
我试图将所有功能添加到全局范围中,但这无效,这是我的尝试
const R = require('ramda'); // R is an object containing lots of functions
for(let x in R) {
global.x = x;
}
另外,我想知道如何使用Ramda库本身进行操作。
确保您设置了称为x的属性,而不是x属性:另外,请确保将R[x]
的值分配回去,而不是属性名称x
global[x] = R[x];
您也可以尝试通过getownPropertynames进行迭代:
for (const prop of Object.getOwnPropertyNames(R)) {
global[prop] = R[prop]
}
或,如果适用,只需破坏所需的属性:
const {someProp, someOtherProp} = R;
根据评论,我不同意键入其他2个字符可以被称为大惊小怪,但这是您的感觉。
喜欢 @uber5001提到了DE结构技术,这是一种方法,但这意味着您首先需要require
整个RAMDA函数到R
,然后检索所需的功能。
您也只能require
所需的功能:
const uniq = require('ramda/src/uniq')
const zip = require('ramda/src/zip')
// and so on
hth
设置RAMDA的所有功能,因为全球范围可能是风险的。Ramda具有很多功能,其中一些功能可能覆盖您拥有的现有全球群体。更好的做法(仍然被认为是不良练习,因为您仍然可以阴影名称变量(是with
语句,它会破坏对象的所有属性,而不会覆盖外部示波器变量。
with(R) {
pipe(
map(x => x ** 2),
filter(x => x > 24)
)([3, 4, 5, 6]); // => [25, 36]
}
请注意,与语句的严格模式被禁用。