Ramda 可以有 isString 吗?
Can Ramda have isString?
背景
我正在尝试使用 ramda,我需要一个纯函数来让我知道给定的输入是否为字符串,就像 lodash _.isString
.
问题
到处搜索后,我在 Ramda 中找不到任何东西。所以我想知道,有没有办法使用 Ramda 的现有函数创建一个 isString
函数?
我发现这非常有限,我不可能最后只使用 lodash :S
Ramda 没有 isString
、isObject
、isArray
、isFunction
等,而是简单地提供 is
,您可以使用它来创建您喜欢的任何一个:
const isString = R.is(String)
const isRectangle = R.is(Rectangle)
isString('foo') //=> true
isString(42) //=> false
isRectangle(new Rectangle(3, 5)) //=> true
isRectangle(new Square(7)) //=> true (if Rectangle is in the prototype chain of Square)
isRectangle(new Triangle(3, 4, 5)) //=> false
而且您不必创建中间函数。您可以按原样使用它:
R.is(String, 'foo') //=> true
R.is(String, {a: 'foo'}) //=> false
这也应该有效 R.type(x) === "String"
如果您正在寻找 ramda 的谓词函数,您应该查看 ramda-adjunct 库。最流行和最广泛使用的 ramda 扩展,带有 ramda 没有的好东西,也不会由于各种原因永远不会实现。我负责维护图书馆,我们有超过 25 位贡献者。
关于 R.is,我会小心使用此函数,它在后台使用 JavaScript instanceof 运算符。当检查来自不同 JavaScript realms/envs 的对象时,例如IFrame,您可能会对 R.is return 值的结果感到惊讶。
背景
我正在尝试使用 ramda,我需要一个纯函数来让我知道给定的输入是否为字符串,就像 lodash _.isString
.
问题
到处搜索后,我在 Ramda 中找不到任何东西。所以我想知道,有没有办法使用 Ramda 的现有函数创建一个 isString
函数?
我发现这非常有限,我不可能最后只使用 lodash :S
Ramda 没有 isString
、isObject
、isArray
、isFunction
等,而是简单地提供 is
,您可以使用它来创建您喜欢的任何一个:
const isString = R.is(String)
const isRectangle = R.is(Rectangle)
isString('foo') //=> true
isString(42) //=> false
isRectangle(new Rectangle(3, 5)) //=> true
isRectangle(new Square(7)) //=> true (if Rectangle is in the prototype chain of Square)
isRectangle(new Triangle(3, 4, 5)) //=> false
而且您不必创建中间函数。您可以按原样使用它:
R.is(String, 'foo') //=> true
R.is(String, {a: 'foo'}) //=> false
这也应该有效 R.type(x) === "String"
如果您正在寻找 ramda 的谓词函数,您应该查看 ramda-adjunct 库。最流行和最广泛使用的 ramda 扩展,带有 ramda 没有的好东西,也不会由于各种原因永远不会实现。我负责维护图书馆,我们有超过 25 位贡献者。
关于 R.is,我会小心使用此函数,它在后台使用 JavaScript instanceof 运算符。当检查来自不同 JavaScript realms/envs 的对象时,例如IFrame,您可能会对 R.is return 值的结果感到惊讶。