Inheritance 如何从fsharp签名文件中的抽象类继承?

Inheritance 如何从fsharp签名文件中的抽象类继承?,inheritance,syntax,f#,abstract-class,signature-files,Inheritance,Syntax,F#,Abstract Class,Signature Files,我正在尝试在FSharp中建模一个域。我希望客户端代码能够体验对这些类型的干净访问。部分是通过创建签名文件(.fsi),如下所述: Microsoft页面没有描述继承如何在FSharp签名文件中工作。我在这里发现了如何使用“interface”关键字指示接口实现: 很好。但我想更进一步,从抽象类继承,并在签名文件中指出 目标是多态性。在某个地方,我想要一个函数将参数“v”作为:(v:S list),其中S是一个超类型,列表可能包含其子类型的值 但是,从抽象类继承的fsharp签名文件的语法是什么

我正在尝试在FSharp中建模一个域。我希望客户端代码能够体验对这些类型的干净访问。部分是通过创建签名文件(.fsi),如下所述:

Microsoft页面没有描述继承如何在FSharp签名文件中工作。我在这里发现了如何使用“interface”关键字指示接口实现:

很好。但我想更进一步,从抽象类继承,并在签名文件中指出

目标是多态性。在某个地方,我想要一个函数将参数“v”作为:(v:S list),其中S是一个超类型,列表可能包含其子类型的值

但是,从抽象类继承的fsharp签名文件的语法是什么

在“artifact.fs”中,我有(是的,这是一个Websharper项目):

[]
类型人工制品()=
抽象成员:带get的文档
在“Visual.fsi”中,我有:

[]
类型视觉=
继承文物
“继承”行不编译。那么正确的语法是什么呢

我试过这些(也不起作用):

1) 人工制品后括号

[<JavaScript; Sealed>]
type Visual = 
    inherit Artefact()
[]
类型视觉=
继承文物()
2) 目视检查后的括号

[<JavaScript; Sealed>]
type Visual() = 
    inherit Artefact
[]
键入Visual()
继承文物

有什么想法吗?

这是从签名文件中的抽象类继承的正确语法:

[<JavaScript; Sealed>]
type Visual = 
    class
        inherit Artefact
    end
[]
类型视觉=
班
继承文物
结束
解释(在我看来)。在我在上面的问题中使用的语法中,编译器不理解类型是类。并非所有类型都可以继承,因此编译器对此表示不满

在这个答案中使用的语法中,我显式地声明类型是一个类。我不知道这个语法,我只看到了“class end”,我从没想过你可以在这两个关键字之间添加东西

感谢上面的回复。如果不知道语法,则自动生成.fsi文件。这将为您提供语法,您可以对其进行自定义和清理。有关自动生成签名文件的信息,请参阅本文:

解决这类问题的最简单方法是编写一个实现文件,让编译器生成fsi文件。谢谢John,这很有帮助。我已经发布了答案。
[<JavaScript; Sealed>]
type Visual() = 
    inherit Artefact
[<JavaScript; Sealed>]
type Visual = 
    class
        inherit Artefact
    end