我想在FSharp中建模一个域。我希望客户端代码体验对这些类型的干净访问。所以部分是通过创建一个签名文件(.fsi)来描述:https://msdn.microsoft.com/en-us/library/dd233196.aspx如何从fsharp签名文件中的抽象类继承?
Microsoft页面没有描述如何在FSharp签名文件中继承。我确实发现了如何在这里用“接口”关键字指示接口实现: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)括号人工制品后后视觉
[<JavaScript; Sealed>]
type Visual() =
inherit Artefact
任何想法
[<JavaScript; Sealed>]
type Visual =
inherit Artefact()
2)括号?
此类问题的最简单方法 - 编写实现文件并让编译器生成fsi文件。 –
谢谢约翰,帮助。我已经发布了一个答案。 –