Kotlin JS не добавляет «новое» ключевое слово, где это необходимо - PullRequest
1 голос
/ 09 ноября 2019

Я создаю интерактивную инфографику, используя Google Charts и Kotlin JS. Это фрагмент страницы Quick Start .

var data = new google.visualization.DataTable();
<..>
var chart = new google.visualization.PieChart(document.getElementById('chart_div'));

Здесь используется ключевое слово "new". Я попытался переписать этот код, используя Kotlin.

val data = google.visualization.DataTable();
<..>
val chart = google.visualization.PieChart(document.getElementById('chart_div'));

Но произошла ошибка, в которой отсутствует слово "new" в строках выше. Таким образом, компилятор Kotlin для JS не добавил ключевое слово там, где они должны быть. Вот скомпилированный код JavaScript.

var data = google.visualization.DataTable();
<..>
var chart =  google.visualization.PieChart(document.getElementById('chart_div'));

Есть ли правильный способ избежать ошибки без использования функции js ()?

Спасибо.

1 Ответ

2 голосов
/ 12 ноября 2019

Причина, по которой ключевое слово new не было добавлено, заключается в том, что переменная google не была добавлена ​​с ключевым словом external. С этим Kotlin генерирует правильный код.

external object google {
    object visualization {
        class DataTable
    }
}
...