使ramda.js在全球范围内访问(无R.)



我想使用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]
}

请注意,与语句的严格模式被禁用。

相关内容

  • 没有找到相关文章

最新更新