Мне нужен тип, который будет преобразован в простой объект 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
изменяемыми:
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
возвращает пустой объект. Теперь вопрос начинает очень походить на отчет об ошибке, верно? Итак, вернемся к вопросу.
Есть ли другие способы добиться того, чего я хочу?