当一个声明了一个类型不绑定到任何东西会发生什么:空类型声明
type a_type
type b_type
let a : a_type = (* ? *)
我就遇到了这个在阅读BuckleScript FFI manual。结合一个JS对象的代码看起来是这样的:
type t
external create_date : unit -> t = "Date" [@@bs.new]
let date = create_date()
BuckleScript的特殊性之外,t
用作有效的类型,在这种情况下看起来像它作为一个多态型的一般外部JS型。
我不得不为提出这样一个基本问题而道歉,但这并没有记录在我已经查看过的任何地方。任何指针赞赏。
所以它基本上抽象了Js类型(因为Js对象是动态的)。 – PieOhPah
通常,但它可以是任何类型。 'Js.Json.t'例如可以是任何的Json类型,但是当我们还不知道(或不想知道)抽象类型是非常有用的,就像你从绑定到'JSON得到什么。 parse'。你还可以做很多疯狂的事情,比如定义[DOM]的类型层次(https://github.com/BuckleScript/bucklescript/blob/master/jscomp/others/dom.mli) – glennsl