我需要一种将被转换为普通 JS 对象的类型,以便将 F# 字段访问转换为简单的 JS 字段访问(这是必要的,因为对象将通过 发送postMessage
,因此它将丢失所有方法)。
再次,我需要
let x = a.b
被翻译成
var x = a.b;
没有任何方法调用。
下面是 F# 参考中稍作修改的示例:
namespace T
open IntelliFactory.WebSharper
[<JavaScript>]
module A =
type MyClass =
val a : int
val b : int
new(a0, b0) = { a = a0; b = b0; }
let myClassObj = new MyClass(35, 22)
let x = myClassObj.b
这不会翻译为
x:错误:无法转换属性访问:b。
好的,让我们让这些val
s 可变:
namespace T
open IntelliFactory.WebSharper
[<JavaScript>]
module A =
type MyClass =
val mutable a : int
val mutable b : int
new(a0, b0) = { a = a0; b = b0; }
let myClassObj = new MyClass(35, 22)
let x = myClassObj.b
这将被成功翻译,但是……MyClass.New
返回一个空对象。现在问题开始看起来很像错误报告,对吗?所以,回到问题。
还有其他方法可以实现我想要的吗?