Types bucklescript方法定义=字符串

Types bucklescript方法定义=字符串,types,ocaml,ffi,reason,bucklescript,Types,Ocaml,Ffi,Reason,Bucklescript,几乎所有bucklescript示例都有如下语法: [@bs.send.pipe : t('options)] external parse : array(string) => 'options = "parse"; [@bs.module "express"] external make : (string, options) => t = "static"; 或者像这样: [@bs.send.pipe : t('options)] external parse : arra

几乎所有bucklescript示例都有如下语法:

[@bs.send.pipe : t('options)] external parse : array(string) => 'options = "parse";
[@bs.module "express"] external make : (string, options) => t = "static";
或者像这样:

[@bs.send.pipe : t('options)] external parse : array(string) => 'options = "parse";
[@bs.module "express"] external make : (string, options) => t = "static";
在本教程中,我看到了最简单的示例:

最后一个=字符串代表什么?在这个例子中,类型t是什么?

t是一个没有定义的类型,称为抽象类型。通常在接口中使用它来隐藏实现,这样您就无法在不使用特定关联函数的情况下访问和操作它,但实际上它根本不需要任何实现。这对于外语互操作尤其有用,因为实现是用另一种语言实现的

=之后的字符串是外部函数的名称,因此在本例中是JavaScript标识符。因此,makeexternal将生成类似require'express.的东西。静态。。。而不是要求“表达”。使

外部解析在OCaml和JavaScript中使用相同的名称,在这种情况下,可以省略外部名称,这是commander所做的。通过将其保留为空字符串,它将从外部定义的名称推断出来。

最后一个=字符串取决于上下文,上下文由外部定义前面的[@bs.blablabla]设置

例如,在此代码段中:

[@bs.module "express"] external make : (string, options) => t = "static";
我们从express模块的静态方法创建make函数,因为我们使用[@bs.module-express]

更多信息请点击此处: