【问题标题】:WebSharper Interface Generator - RecordsWebSharper 接口生成器 - 记录
【发布时间】:2018-04-05 01:13:08
【问题描述】:

如何定义将被序列化为 JSON 对象的记录...我一直在尝试为 YUI2 构造函数构建 oConfig 参数,例如:

type TreeParameter =
    {
        Type : string
        Label : string
        Expanded : bool
        Children : TreeParameter array
    }

谢谢!

大卫

【问题讨论】:

  • 我不知道自动序列化为 JSON 的方法,但你可以重写 ToString() 方法,例如
  • 这真的是关于 WebSharper 接口生成器,我认为它会有特殊的运算符来定义这种类型。
  • 我没有看到在位于此处的 Bing 地图扩展中生成记录的单个示例:bitbucket.org/IntelliFactory/ifpub-ws-bing/src 我开始认为这根本不可能。

标签: f# websharper


【解决方案1】:

我想我们可以实现它,但它还没有进入接口生成器。现在你可以这样做:

let TreeParameter =
    let self = Type.New()
    Pattern.Config "TreeParameter" {
        Required =
            [
                "Type", T<string>
                "Label", T<string>
                "Expanded", T<bool>
                "Children", Type.ArrayOf self
            ]
        Optional = []
    }
    |=> self

从 F# 的角度来看,生成的类型将如下所示:

type TreeParameter(t: string, l: string, e: bool, c: TreeParameter[]) =
    member this.Type = t
    member this.Label = l
    member this.Expanded = e
    member this.Children = c

从 JavaScript 的角度来看,这些值如下所示:

{Type:t,Label:l,Expanded:e,Children:c}

本质上它就像一个记录,没有记录语法和功能扩展的好处。

【讨论】:

    【解决方案2】:

    WebSharper 现在已经实现了这个功能。只需使用TSelf

    例子:

    let TreeParameter =
        Pattern.Config "TreeParameter" {
            Required =
                [
                    "Type", T<string>
                    "Label", T<string>
                    "Expanded", T<bool>
                    "Children", Type.ArrayOf TSelf
                ]
            Optional = []
        }
    

    【讨论】:

      猜你喜欢
      • 2016-01-05
      • 2016-01-17
      • 1970-01-01
      • 2017-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-03
      • 2013-06-12
      相关资源
      最近更新 更多