1

如何在生成的 FunScript 代码中使用在我的宿主项目中声明并通过 Ajax 提供服务的类型?

例如,我假设我声明了一个类型 T,然后创建一个 REST 端点以该格式提供数据。现在,如果我想从 FunScript 加载数据并使用它,它不再键入 T。


根据 Alfanso 的回答编辑解决方案:

假设在基础 F# 项目中定义了类型“MyType”,并且在 localhost:6543/myData 上提供了与此类型匹配的数据

let start () =
  async{  
    let url = "http://localhost:6543/myData"
    let req = System.Net.WebRequest.Create(url)
    let! data = req.AsyncGetJSON<MyType list>()
    Globals.window.alert( (sprintf "%A" data) )
  }
  |> Async.StartImmediate

我缺少的是

  • req.AsyncGetJSON
  • 使用 Async.StartImmediate
4

1 回答 1

2

您能否发布一些代码以更好地了解您到底想要做什么?作为参考,您可以在这个小项目中看到如何使用 FunScript.HTML 扩展交换类型安全的 JSON 值的示例。在这种情况下:

  • CLIMutable使用具有和System.Data.Linq.Mapping.Table属性的 F# 记录在服务器、客户端和数据库之间共享类型: Source
  • 对于服务器,我使用的是 ASP.NET Web API,它以 JSON 的形式透明地发送类型:Source
  • 在客户端,我使用WebRequest.AsyncGetJSON<'T>来自 FunScript.HTML 的扩展,它在后台发出 a ,使用浏览器方法XMLHttpRequest解析结果,并使用将对象“转换”为所需的类型:hereherehereJSON.parseunbox<'T>

unbox<'T>如果您想在 F# 中以静态类型的方式使用动态类型,这是您经常必须使用的小技巧。

我希望这有帮助!

于 2014-11-16T13:38:29.757 回答