Я хотел бы использовать Kotlin типы чисел без знака с Javascript бэкэндом; то есть я хотел бы написать Kotlin код с использованием UByte
и скомпилировать его в JS.
. Я написал следующую тестовую программу:
@kotlin.ExperimentalUnsignedTypes
fun main(args: Array<String>) {
val x : UByte = 1u
println(x)
}
I может скомпилировать и запустить его без проблем с бэкэндом JVM:
$ kotlinc-1.3.70/bin/kotlinc hello.kt -include-runtime -d hello.jar
$ java -jar hello.jar
1
Но если я скомпилирую его в Javascript и попытаюсь загрузить вывод в браузер, произойдет сбой:
$ kotlinc-1.3.70/bin/kotlinc-js hello.kt -output hello.js
<html>
<head>
<title>Unsigned</title>
<script src="kotlin.js"></script>
<script src="kotlin.meta.js"></script>
<script src="hello.js"></script>
</head>
<body>
</body>
</html>
Я даже не пытаюсь позвонить hello.main
, это уже не удается при загрузке страницы:
Uncaught TypeError: UByte is not a constructor
at main (hello.js:8)
at hello.js:12
at hello.js:15
В случае, если это помогает, сгенерированный JS выглядит следующим образом:
if (typeof kotlin === 'undefined') {
throw new Error("Error loading module 'hello'. Its dependency 'kotlin' was not found. Please, check whether 'kotlin' is loaded prior to 'hello'.");
}var hello = function (_, Kotlin) {
'use strict';
var UByte = Kotlin.kotlin.UByte;
var println = Kotlin.kotlin.io.println_s8jyv4$;
function main(args) {
var x = new UByte(1);
println(x);
}
_.main_kand9s$ = main;
main([]);
Kotlin.defineModule('hello', _);
return _;
}(typeof hello === 'undefined' ? {} : hello, kotlin);
Чего мне не хватает для работы с UByte
и соавт. в Kotlin код, который компилируется в Javascript?