Кажется, что WebSharper имеет некоторые трудности с преобразованием между целыми типами (скажем, - uint64
). Я получаю это:Преобразование между целыми типами в WebSharper
ошибку: Не удалось перевести вызов метода: ToUInt64 (..) [Microsoft.FSharp.Core.Operators]
То же самое происходит с int32
->uint32
, int16
- >int32
и многие другие (только byte
< ->int32
, похоже, работает).
Итак, вопрос: как мне обойти эту проблему? У меня есть целое число i
(это int32
, так как я ничего не могу получить), и теперь я хочу получить i
-й элемент из Uint8Array
. Uint8Array.Get
хочет uint64
. Как мне преобразовать i
в uint64
?
Я собирался использовать чит-код [<Inline>]
, но это тоже не сработает, потому что я получаю эту ошибку, даже если пытаюсь вернуться или передать в качестве аргумента любое целое число, отличное от int32
.
Покажите нам свой код. – mydogisbox
Мне любопытно, какова ваша мотивация для использования этих типов? В настоящее время ни один из них не был правильно реализован, но представлен как «Number» в JS, поэтому вы всегда можете «магия» -конвертировать: 'As (x: int32)'. –
t0yv0
@toyvo Я разбираю двоичный файл (это будет виртуальная машина, но это не имеет большого значения). Я надеялся, что статические типы проведут меня через лабиринт этого двоичного формата, но выяснится, что 1) я не могу использовать его для уменьшения числа ошибок; 2) Я не могу использовать его вообще. Я понимаю, что после перевода в JS это не будет иметь никакого значения, но мне просто нужны проверки времени компиляции. – kirelagin