问题标签 [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.

0 投票
1 回答
868 浏览

reason - 我可以在 JS 对象上进行模式匹配吗?

给定一个访问 JavaScript 对象属性的函数——</p>

— 有没有办法将其重写为属性的模式匹配?

我希望这样的事情会起作用,但语法无效:

0 投票
6 回答
18837 浏览

typescript - ReasonML 与 TypeScript

ReasonML ( https://reasonml.github.io/ ) 和 TypeScript ( https://www.typescriptlang.org/ )之间的权衡是什么?

0 投票
2 回答
789 浏览

reason - 如何定位 BuckleScript bsconfig.json 中的子目录

我有以下文件夹结构

在我的中,使用此处bsconfig.json找到的快速入门指南。我的配置中有以下键/值:

它仅针对 main.re 文件。我尝试了一些常规的配置选项,例如*.re,但无济于事。如果我想定位所有子目录,我该怎么做?谢谢你。

0 投票
1 回答
892 浏览

javascript - 如何在 ReasonML 中扩展 JS 类

例如,我有一个类似 es6的类:

class Foo {...}

我想扩展它:

class Bar extends Foo {...}

reason-react文档中,我找到了示例,但我不确定它是否适合我:

但是当我尝试用这种风格编写代码时,我得到一个错误:

错误:未绑定记录字段更新

(在这个例子mysuperclass中是来自 3rd-party js-library 的外部)。

也许我做错了什么?

0 投票
1 回答
65 浏览

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 实用程序以使我的代码可以接受?

0 投票
1 回答
426 浏览

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文件如下所示:

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 回答
736 浏览

types - 空类型声明

当一个人声明一个类型而不将它绑定到任何东西时会发生什么:

我在阅读BuckleScript FFI 手册时遇到了这个问题。绑定到 JS 对象的代码如下所示:

除了 BuckleScript 的特殊性之外,t它被用作有效类型,在这种情况下,它看起来就像是作为通用外部 JS 类型的多态类型。

我不得不为提出这样的基本问题而道歉,但这在我调查过的任何地方都没有记录。任何指针表示赞赏。

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 回答
498 浏览

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

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

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

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

谢谢

输入模块定义:

选择模块定义: