當一個聲明瞭一個類型不綁定到任何東西會發生什麼:空類型聲明
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