簡體   English   中英

使Ramda.js函數可以全局訪問(沒有R.)

[英]making Ramda.js functions globally accessible (without R. )

我想在不輸入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提到脫結構技術,它是一種方式,但它意味着你首先需要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]
}

請注意,在嚴格模式下禁用with語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM