问题标签 [bucklescript]
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 - 我可以在 JS 对象上进行模式匹配吗?
给定一个访问 JavaScript 对象属性的函数——</p>
— 有没有办法将其重写为属性的模式匹配?
我希望这样的事情会起作用,但语法无效:
typescript - ReasonML 与 TypeScript
ReasonML ( https://reasonml.github.io/ ) 和 TypeScript ( https://www.typescriptlang.org/ )之间的权衡是什么?
reason - 如何定位 BuckleScript bsconfig.json 中的子目录
我有以下文件夹结构
在我的中,使用此处bsconfig.json
找到的快速入门指南。我的配置中有以下键/值:
它仅针对 main.re 文件。我尝试了一些常规的配置选项,例如*.re
,但无济于事。如果我想定位所有子目录,我该怎么做?谢谢你。
javascript - 如何在 ReasonML 中扩展 JS 类
例如,我有一个类似 es6的类:
class Foo {...}
我想扩展它:
class Bar extends Foo {...}
在reason-react文档中,我找到了示例,但我不确定它是否适合我:
但是当我尝试用这种风格编写代码时,我得到一个错误:
错误:未绑定记录字段更新
(在这个例子mysuperclass
中是来自 3rd-party js-library 的外部)。
也许我做错了什么?
require - 如何使用 bucklescript 要求和 google 函数
我正在尝试将使用 bucklescript 创建的函数部署到google 函数,但如果没有此错误,部署将无法运行:
您是否在 package.json 依赖项中列出了所有必需的模块?详细的堆栈跟踪:错误:找不到模块'bs-platform/lib/js/js_json.js'
我正在使用该gcloud beta functions deploy
实用程序。我的代码正在使用Js.Json
模块,它var Js_json = require("bs-platform/lib/js/js_json.js");
在输出的 js 代码中产生。我的package.json
包含bs-platform
包裹。
有没有办法设置 bucklescript 或 gcloud 实用程序以使我的代码可以接受?
reason - 将 Reason 源文件编译到与源文件相同的目录
我正在编写一个节点应用程序,我想在其中混合使用 Reason 和原始 JavaScript。
bucklescript 文档中的这一部分对其进行了描述
当用户有一个现有的 JS 项目时,将 JS 文件输出到与 vanilla JS 相同的目录中是有意义的,该模式添加了一个名为的键
in-source
,以便在 ML 文件旁边生成 JS 文件。
我假设这是在bsconfig.json
文件中?但是密钥应该有什么价值呢?架构文档未提及此选项。
我正在运行 Bucklescript 1.9.1 版-因此该功能应该可用(自 1.9.0 起可用)。
如何使用该in-source
选项?
我的bsconfig.json
文件如下所示:
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 中的版本号之间存在差异 - 但我怀疑这是问题的根源。
types - 空类型声明
当一个人声明一个类型而不将它绑定到任何东西时会发生什么:
我在阅读BuckleScript FFI 手册时遇到了这个问题。绑定到 JS 对象的代码如下所示:
除了 BuckleScript 的特殊性之外,t
它被用作有效类型,在这种情况下,它看起来就像是作为通用外部 JS 类型的多态类型。
我不得不为提出这样的基本问题而道歉,但这在我调查过的任何地方都没有记录。任何指针表示赞赏。
reason - 制作 ReasonML/Bucklescript 输出 ES5 兼容代码
在使用 ReasonML 和 Bucklescript 时,是否可以配置 Bucklescript 使其不会生成export
语句?我希望生成的代码可以在浏览器中按原样使用,也就是说,与 ES5(或 ES6)兼容。
编辑:好的,在尝试更多工具链时,我意识到仅关闭工具链export
是不够的。请参见下面的示例:
如果删除,此代码将污染全局命名空间exports
,并且从 ES5 兼容性的角度来看,它只是被破坏了。
编辑 2:阅读 Bucklescript 的博客,这似乎是不可能的:
一个 OCaml 模块编译成一个 JavaScript 模块(AMDJS、CommonJS 或 Google 模块),没有名称修改。
来源。
material-ui - 如何在原因反应绑定中跨组件组合道具?
我目前正在编写一个材料 UI 原因反应绑定,我想知道如何重用以前定义的道具。
Select 组件在底层 react-js 库中将所有 Input props 传播到自身中。这是通过传播道具来完成的,但是在 ReasonML 中不鼓励这样做,因为类型会丢失。
作为临时解决方案,我已经将道具从一个复制到另一个,但这不可扩展。如果有人能建议在 Reason-React 中这样做的正确方法是什么,我将不胜感激?
谢谢
输入模块定义:
选择模块定义: