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) アーティファクトの後の括弧
[<JavaScript; Sealed>]
type Visual =
inherit Artefact()
2) Visual の後の括弧
[<JavaScript; Sealed>]
type Visual() =
inherit Artefact
何か案は?