Intereting Posts
Как сделать необязательным / nullable свойство в hibernate-validator? Почему этот код Котлина все еще требует?. для доступа к членам? версия kotlin, которая используется для построения с градиентом (1.1.2-5), отличается от той, что включена в плагин IDE (1.1.2-4) Проект не будет построен с Kotlin 1.1.3 Почему построение Gradle исходного кода Kotlin приостанавливается на ~ 3 секунды «заставляя System.gc ()»? Преобразование метода «Callable <T>» Java в Kotlin Android Studio 3.0 Предварительный просмотр Отсутствует Импорт при рефакторинге кода Котлина Как я могу инициализировать переменную перед каждым тестом, используя kotlin-test framework Преобразование java в kotlin Kotlin Android, Spinner setSelection не разрешен Собственный интерфейс Kotlin Котлиновская видимость вложенных членов Круговая анимация не воспроизводится Kotlin: зачем мне инициализировать var с помощью пользовательского getter? Игнорировать setter и установить свойство напрямую

Для каждого метода требуется аннотация @JsName?

Я пытался заставить NodeJs работать с Kotlin для примера HelloWorld.

Согласно документации Kotlin JS , для перегруженных методов требуется аннотация @JsName. Но, по моему опыту, это требуется даже для одного метода. Без этой аннотации компилятор добавляет суффикс к имени метода, как показано на скриншоте. введите описание изображения здесь

Это ошибка? Или я чего-то не хватает?

Я использую модуль Kotlin 1.1.0, предоставляемый NPM (пожалуйста, проверьте ссылку GitHub выше для полной кодовой базы, если это необходимо).

Компилятор Kotlin управляет именами всех функций, за исключением тех, которые не принимают никаких параметров. Мотивация заключается в следующем: вы можете добавить перегруженную функцию позже, и это не должно нарушать двоичную совместимость кода. Что касается @JsName : это зависит от вашей цели. Я не знаю этого и, следовательно, не могу сказать, добавляете ли вы shuold для @JsName комментариев @JsName для каждого метода. Если вы разрабатываете библиотеку, предназначенную для использования с JavaScript, да, вам, вероятно, нужно поместить @JsName для каждой функции, которую вы хотите получить из JavaScript. Мы добавим еще одну аннотацию, которая отключает манипуляцию по всему классу или файлу.