我正在尝试在 FSharp 中为域建模。我希望客户端代码能够体验对这些类型的干净访问。因此,其中一部分是通过创建签名文件 (.fsi),如下所述:https ://msdn.microsoft.com/en-us/library/dd233196.aspx
Microsoft 页面没有描述继承如何在 FSharp 签名文件中工作。我确实在这里发现了如何使用“interface”关键字指示接口实现:https ://github.com/intellifactory/websharper.ui.next/blob/master/WebSharper.UI.Next/Attr.fsi
好的。但我想更进一步,从一个抽象类继承,并在签名文件中指出这一点。
目标是多态性。在某个地方,我想要一个函数将参数“v”作为:(v : S list),其中 S 是超类型,列表可能包含其子类型的值。
但是从抽象类继承的 fsharp 签名文件中的语法是什么?
在“Artefact.fs”中,我有(是的,它是一个 Websharper 项目):
[<JavaScript; AbstractClass>]
type Artefact() =
abstract member Visual : Doc with get
在“Visual.fsi”中,我有:
[<JavaScript; Sealed>]
type Visual =
inherit Artefact
“继承”行不编译。那么正确的语法是什么?
我尝试了这些(也不起作用):
1)Artefact 之后的括号
[<JavaScript; Sealed>]
type Visual =
inherit Artefact()
2) Visual 后面的括号
[<JavaScript; Sealed>]
type Visual() =
inherit Artefact
有任何想法吗?