问题标签 [rescript]

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

yarn-workspaces - 从 git 存储库安装多个工作区 npm (yarn) 包

我有两个存储库。第一个包含一个带有两个包的 monorepo:

实际上packages/reindexed取决于. packages/transaction的内容packages/transaction/packages.json是这样的(片段):

该文件packages/reindexed/package.json或多或少是这样的:

请注意,第二个项目使用 ReScript 作为主要语言并包含以下行:

(目前该文件transaction.js有点难以用 ReScript 编写)

现在在第二个项目中,我依赖于@kaiko/reindexed这样:

但是当我运行yarn并尝试编译这个项目时,我没有得到正确的@kaiko/reindexed及其依赖关系,它基本上无法安装@kaiko-internal/transaction,即import * from '@kaiko-internal/transaction';失败。

有没有办法从工作区的 monorepo 安装几个依赖项?

0 投票
1 回答
56 浏览

reason - 如何在 Reason React 中使用模数运算符?

在理性反应中使用 % 运算符时,我留下一个错误“找不到值 %”。Reason 反应中是否有另一个词表示 % ?

0 投票
1 回答
76 浏览

node.js - 使用 genType 导出具有超过 1 个参数的 rescript 函数时出现 Curry.js 错误

当导出具有超过 1 个参数(2 个或更多)的函数时,它会引发以下错误,这基本上表示我们 import 的方式存在问题curry.js。我在下面附上了一个示例和软件包版本。

错误:

例子

演示.res
演示.bs.js
演示.gen.ts
包.json

节点版本

操作系统

Manjaro Linux

0 投票
1 回答
123 浏览

interop - 如何使用 TypeScript 中的 List、Map 等

我有一个组合 ReScript 和 TypeScript 项目。我想用来gentype公开 TypeScript 友好的对象。Gentype 适用于字符串、布尔值、记录和其他基本对象,没有任何麻烦。如何使用TypeScript 中的listchar其他特定于 ReScript 的类型?

有一个垫片功能,但我不知道该怎么做。我会假设标准带库有内置垫片,但找不到它们。

我计划在 Rescript 中进行大部分计算和繁重的工作。所以当信息被发送到 TypeScript 时,我可能只是在消费数据,而不是修改它。这可能是遍历列表以显示非 Rescript React 项目中的内容。我不打算操纵数据。

一种选择是在导出结果之前将列表转换为 ReScript 中的数组。因此,任何时候我想使用来自 TypeScript 的信息,我都会在 ReScript 中创建一个函数和/或类型,它只有布尔、数字、字符串、数组和对象。我可以创建一个“互操作”模块,其中包含我想从 TypeScript 使用或使用的所有东西。这在 ReScript 和 TypeScript 世界之间提供了一个清晰的分离,并且很容易让我理解,但似乎效率有点低(比如将所有列表转换为数组)和额外的工作。

另一方面,如果从 TypeScript 中使用诸如 list 和 map 之类的 Belt 对象很麻烦,即使使用了 shims,那么无论如何我最好还是创建我的“互操作”模块。

在 TypeScript 中使用 list、map、char 和其他 ReScript 特定对象的推荐/最简单/最佳方式是什么?是否有针对 Belt 标准库的友好 Typescript 定义,即使我不使用 ReScript 也可以使用?

===

一个附加说明。我有尝试从 C# 使用 F#(功能)的经验。这很痛苦。在那个环境中对我来说最好的解决方案是在 F# 端创建一个接口,该接口在不使用 F# 本机对象的 C# 端很容易使用。

0 投票
1 回答
42 浏览

graphql - 使用 GraphQl+ReScript 上传文件

有人使用 ApolloGraphQl + Rescript 吗?我很难上传文件。如何实现apollo-upload-client?据我了解,我应该使用 createUploadLink 修改 httpLink 并且此函数会更改我的请求中的内容类型。

如果有人帮助我,我将不胜感激

0 投票
1 回答
42 浏览

interop - 如何用new调用构造函数

我是 ReScript 的新手。我尝试将它与Telegraf. 我导入了电报:

我如何调用Telegraf构造函数?

0 投票
1 回答
22 浏览

module - Rescript open 并未将功能纳入范围

open模块前缀应该如何在 rescript 和 rescript-react 中工作。它似乎没有遵守文档。例如,我有一个文件阅读器模块

文件阅读器.res

我试图从反应组件中使用:

上传.res

让代码编译的唯一方法是

  1. 打开
  2. 使用模块名称引用

我的理解是你只需要做一个或另一个。如果我删除该open语句,这是编译器的输出

我们为您发现了一个错误!
src/Upload.res:15:13-36

13 ┆ 事件 -> 14 ┆ firstFileFromEvent -> 15 ┆<br /> FileReader.fileToDataUrl(setDataUrlState) 16 ┆ 17 ┆

在 FileReader 中找不到值 fileToDataUrl

添加 open 语句并将语句更改FileReader.fileToDataUrl(setDataUrlState)fileToDataUrl(setDataUrlState)导致此异常:

我们为您发现了一个错误!
src/Upload.res:15:13-25

13 ┆ 事件 -> 14 ┆ firstFileFromEvent -> 15 ┆<br /> fileToDataUrl(setDataUrlState) 16 ┆ 17 ┆

找不到值 fileToDataUrl

open我在函数调用的语句和模块前缀中发布的源代码可以编译但有一个警告:

警告号 44
src/Upload.res:1:1-15

1 │ 打开 FileReader 2 │ 3 │ 让 k = x => (_ => x)

此 open 语句隐藏模块标识符 FileReader(稍后使用)

我在 Mac 上;使用rescript 9.1.4;

0 投票
1 回答
39 浏览

rescript - 使用 CLI 编译 Rescript -- 没有 bsconfig.json

有没有办法只用 CLI 编译 ReScript?

换句话说,没有bsconfig.json?

理想情况下,我希望能够只调用 CLI 并能够编译成 ES6、声明外部依赖项等。

0 投票
0 回答
21 浏览

reactjs - 为孩子添加鼠标监听器

我正在使用 ReasonML。

我想创建一个工具提示元素。它应该包装一个 React.element 并提供由鼠标事件触发的工具提示功能。

但我根本不希望它出现在 DOM 中,因为这会破坏布局。我试过使用 display: contents,但一些 CSS 规则仍然会被打乱。

是否可以通过添加到它的属性或获取引用并通过它添加它来将 mouseevent 侦听器添加到 children:React.element 对象?

0 投票
1 回答
59 浏览

reactjs - Rescript-react:创建隐藏的画布元素

我正在创建一个简单的反应应用程序 (HTML),它允许用户浏览到他们本地 PC 上的图像,然后将其显示在图像标签中。我想获取一个 data-url 并动态创建一个隐藏的画布标签(以不同的方法打开,但我想调整图像的大小,而不是在显示图像的标签上设置大小限制)。这是我的调整大小代码

MyComponent.res(违规代码)

错误

找不到记录字段 getContext。

我没有找到太多关于使用 createElement 或 createElementVariadic 的文档或帖子——所以我在这里猜测。它看起来好像createElement返回一个类型的对象,element但没有关联的方法:

React.res

所以我想有几个问题

  1. 我是否实际上创建了一个代表 Canvas 的 HTML 对象的元素?
  2. 如果我这样做了,我该如何调用该代码上的方法?
  3. 如果我没有,如何创建隐藏的 Canvas 对象?
  4. 最后,一个人如何浏览文档和源代码以自己发现这一点?