问题标签 [reason]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
341 浏览

reason - 使用与 NPM 包不同的命名空间名称创建一个 Reason 包

我开始创建一个本地 Reason 单元测试库,灵感来自 RSpec(我之前为 F# 做过一个)

我想调用 library Respect,但由于已经有一个名为“respect”的 npm 包,我将 npm 库命名为“re-respect”。但我bsconfig.json将包名指定为respect

我推送了这个包,并从一个测试项目中导入了它,我在其中引用了Respect命名空间。我在项目中有这个原因源文件:

构建代码npm run build工作正常,但是当我运行测试时,我得到了错误:

错误很明显 - npm 包安装在它尝试查找代码的位置node_modules/re-respectnode_modules/Respect

我是否正在尝试做我不应该做的事情?我的根命名空间应该跟在 NPM 包名后面吗?我需要找一个新名字吗?

ps 在我写这篇文章时,我意识到 package.json 和 bsconfig.json 中的版本号之间存在差异 - 但我怀疑这是问题的根源。

0 投票
1 回答
58 浏览

oop - OOP - 如何在 Reason 内部调用类方法

我有一testFactory堂课。目的是能够传入工厂,然后控制台输出结果以用于演示目的。到目前为止,当尝试createProductA在测试方法中调用时,编译器会抱怨 createProductA 未绑定(Unbound value createProductA)。

在类内部调用方法的正确语法是什么?

0 投票
1 回答
313 浏览

reason - 制作 ReasonML/Bucklescript 输出 ES5 兼容代码

在使用 ReasonML 和 Bucklescript 时,是否可以配置 Bucklescript 使其不会生成export语句?我希望生成的代码可以在浏览器中按原样使用,也就是说,与 ES5(或 ES6)兼容。

编辑:好的,在尝试更多工具链时,我意识到仅关闭工具链export是不够的。请参见下面的示例:

如果删除,此代码将污染全局命名空间exports,并且从 ES5 兼容性的角度来看,它只是被破坏了。

编辑 2:阅读 Bucklescript 的博客,这似乎是不可能的:

一个 OCaml 模块编译成一个 JavaScript 模块(AMDJS、CommonJS 或 Google 模块),没有名称修改。

来源

0 投票
1 回答
173 浏览

ocaml - 如何使用 OCaml/Reason 在模块中创建内部价值

我有以下模块:

它完成以下工作:

  1. 为 setter 创建类型
  2. 用于设置 + 获取的 builderName 对象此外,我想:
  3. 能够使用 getName 函数上的 JS.log 检索名称

但是,在这种情况下,我得到以下错误:

关于我如何正确设置 setter/getter 的任何建议都非常感谢。谢谢你。

0 投票
1 回答
437 浏览

oop - 如何在 OCaml/Reason 中创建可选的模块签名类型

我正在尝试使用 Reason 中的模块来遵循构建器设计模式。我有以下类型:

以及签名类型:

我将UserBuilderType签名类型作为函子传递给BuilderPattern

然后,我将适当的值作为模块传递,执行以下操作:

然而,为了让这个构建器设计模式真正成为一个构建器设计模式,签名类型需要是可选的。我正在为如何做到这一点而苦苦挣扎。例如,如果我将签名类型编辑为空:

编译器会抱怨:Unbound value Builder.name. 任何关于如何使签名类型可选的建议都非常受欢迎。我一如既往的感谢。

完整的代码可以在这里看到。

0 投票
1 回答
498 浏览

material-ui - 如何在原因反应绑定中跨组件组合道具?

我目前正在编写一个材料 UI 原因反应绑定,我想知道如何重用以前定义的道具。

Select 组件在底层 react-js 库中将所有 Input props 传播到自身中。这是通过传播道具来完成的,但是在 ReasonML 中不鼓励这样做,因为类型会丢失。

作为临时解决方案,我已经将道具从一个复制到另一个,但这不可扩展。如果有人能建议在 Reason-React 中这样做的正确方法是什么,我将不胜感激?

谢谢

输入模块定义:

选择模块定义:

0 投票
1 回答
373 浏览

node.js - 在 Node.js 中获取生成子进程的结果

如何执行子进程并获取结果退出代码和输出(stdout、stderr)?

就像是

不幸的是,这会导致编译错误:

0 投票
1 回答
209 浏览

asynchronous - 使用带有 setTimeout 的 Promise

我是 Reason 的新手,目前正在尝试将个人项目从 js 转换为 Reason。到目前为止,除了异步的东西之外,它一直很容易。我无法延迟递归地调用我的函数。我有一个getPrice返回 int 承诺的函数

我想做另一个功能checkPrice,除非满足条件,否则它会无休止地通过给定的用户价格检查当前价格。

但我得到类型不匹配说setTimeout应该是单元类型

0 投票
1 回答
61 浏览

reason - ReasonML 快速入门编译失败

按照 ReasonML 快速启动页面上的说明,该命令npm run start编译应用程序失败。

它表明代码有语法错误。

0 投票
2 回答
592 浏览

ffi - 如何使用reason-react定义一个在函数签名中接受多种类型的绑定?

在定义一个原因反应绑定时,我想知道如何确定一个接受多种类型的绑定。例如,我有一个应该接受的参数~valuestringnumber或。目前我正在使用,但我认为这不是最干净的方法,因为我更愿意明确定义类型。如何才能做到这一点?我看过但我不确定如何将外部语法组合到函数签名中。array(string)array(number)option('a)bs.unwrap

作为一个附带问题,由于未定义数字类型,我的绑定是否也必须将浮点数和整数映射为数字?