问题标签 [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.
reason - 使用与 NPM 包不同的命名空间名称创建一个 Reason 包
我开始创建一个本地 Reason 单元测试库,灵感来自 RSpec(我之前为 F# 做过一个)
我想调用 library Respect
,但由于已经有一个名为“respect”的 npm 包,我将 npm 库命名为“re-respect”。但我bsconfig.json
将包名指定为respect
我推送了这个包,并从一个测试项目中导入了它,我在其中引用了Respect
命名空间。我在项目中有这个原因源文件:
构建代码npm run build
工作正常,但是当我运行测试时,我得到了错误:
错误很明显 - npm 包安装在它尝试查找代码的位置node_modules/re-respect
。node_modules/Respect
我是否正在尝试做我不应该做的事情?我的根命名空间应该跟在 NPM 包名后面吗?我需要找一个新名字吗?
ps 在我写这篇文章时,我意识到 package.json 和 bsconfig.json 中的版本号之间存在差异 - 但我怀疑这是问题的根源。
oop - OOP - 如何在 Reason 内部调用类方法
我有一testFactory
堂课。目的是能够传入工厂,然后控制台输出结果以用于演示目的。到目前为止,当尝试createProductA
在测试方法中调用时,编译器会抱怨 createProductA 未绑定(Unbound value createProductA
)。
在类内部调用方法的正确语法是什么?
reason - 制作 ReasonML/Bucklescript 输出 ES5 兼容代码
在使用 ReasonML 和 Bucklescript 时,是否可以配置 Bucklescript 使其不会生成export
语句?我希望生成的代码可以在浏览器中按原样使用,也就是说,与 ES5(或 ES6)兼容。
编辑:好的,在尝试更多工具链时,我意识到仅关闭工具链export
是不够的。请参见下面的示例:
如果删除,此代码将污染全局命名空间exports
,并且从 ES5 兼容性的角度来看,它只是被破坏了。
编辑 2:阅读 Bucklescript 的博客,这似乎是不可能的:
一个 OCaml 模块编译成一个 JavaScript 模块(AMDJS、CommonJS 或 Google 模块),没有名称修改。
来源。
ocaml - 如何使用 OCaml/Reason 在模块中创建内部价值
我有以下模块:
它完成以下工作:
- 为 setter 创建类型
- 用于设置 + 获取的 builderName 对象此外,我想:
- 能够使用 getName 函数上的 JS.log 检索名称
但是,在这种情况下,我得到以下错误:
关于我如何正确设置 setter/getter 的任何建议都非常感谢。谢谢你。
oop - 如何在 OCaml/Reason 中创建可选的模块签名类型
我正在尝试使用 Reason 中的模块来遵循构建器设计模式。我有以下类型:
以及签名类型:
我将UserBuilderType
签名类型作为函子传递给BuilderPattern
:
然后,我将适当的值作为模块传递,执行以下操作:
然而,为了让这个构建器设计模式真正成为一个构建器设计模式,签名类型需要是可选的。我正在为如何做到这一点而苦苦挣扎。例如,如果我将签名类型编辑为空:
编译器会抱怨:Unbound value Builder.name
. 任何关于如何使签名类型可选的建议都非常受欢迎。我一如既往的感谢。
完整的代码可以在这里看到。
material-ui - 如何在原因反应绑定中跨组件组合道具?
我目前正在编写一个材料 UI 原因反应绑定,我想知道如何重用以前定义的道具。
Select 组件在底层 react-js 库中将所有 Input props 传播到自身中。这是通过传播道具来完成的,但是在 ReasonML 中不鼓励这样做,因为类型会丢失。
作为临时解决方案,我已经将道具从一个复制到另一个,但这不可扩展。如果有人能建议在 Reason-React 中这样做的正确方法是什么,我将不胜感激?
谢谢
输入模块定义:
选择模块定义:
node.js - 在 Node.js 中获取生成子进程的结果
如何执行子进程并获取结果退出代码和输出(stdout、stderr)?
就像是
不幸的是,这会导致编译错误:
asynchronous - 使用带有 setTimeout 的 Promise
我是 Reason 的新手,目前正在尝试将个人项目从 js 转换为 Reason。到目前为止,除了异步的东西之外,它一直很容易。我无法延迟递归地调用我的函数。我有一个getPrice
返回 int 承诺的函数
我想做另一个功能checkPrice
,除非满足条件,否则它会无休止地通过给定的用户价格检查当前价格。
但我得到类型不匹配说setTimeout
应该是单元类型
reason - ReasonML 快速入门编译失败
按照 ReasonML 快速启动页面上的说明,该命令npm run start
编译应用程序失败。
它表明代码有语法错误。
ffi - 如何使用reason-react定义一个在函数签名中接受多种类型的绑定?
在定义一个原因反应绑定时,我想知道如何确定一个接受多种类型的绑定。例如,我有一个应该接受的参数~value
:string
、number
或。目前我正在使用,但我认为这不是最干净的方法,因为我更愿意明确定义类型。如何才能做到这一点?我看过但我不确定如何将外部语法组合到函数签名中。array(string)
array(number)
option('a)
bs.unwrap
作为一个附带问题,由于未定义数字类型,我的绑定是否也必须将浮点数和整数映射为数字?