Выпуск jsii 1.31, генератора кода C#, Go, Java и Python из TypeScript

Компания Amazon опубликовала компилятор jsii 1.31, представляющий собой модификацию компилятора TypeScript, позволяющую извлечь из компилируемых модулей информацию об API и сгенерировать универсальное представление данного API для обращения к JavaScript-классам из приложений на различных языках программирования. Код проекта написан на TypeScript и распространяется под лицензией Apache 2.0.

Jsii даёт возможность создавать на языке TypeScript библиотеки классов, которые могут использоваться в проектах на языках C#, Go, Java и Python, благодаря трансляции в родные для этих языков модули, предоставляющие тот же самый API. Инструментарий используется в AWS Cloud Development Kit для поставки библиотек для разных языков программирования, формируемых из одной кодовой базы.

Новый выпуск примечателен добавлением команды «jsii-rosetta transliterate», позволяющий провести транслитерацию файлов «.jsii»c промежуточным представлением кода в один или несколько целевых языков программирования.

Например, на основе JavaScript/TypeScript-кода:


   export class HelloWorld {
       public sayHello(name: string) {
           return `Hello, ${name}`;
       }

       public fibonacci(num: number) {
           let array = [0, 1];
           for (let i = 2; i ‹ num + 1; i++) {
               array.push(array[i - 2] + array[i - 1]);
           }
           return array[num];
       }
   }

jsii сгенерирует Python-код:


   class HelloWorld:
       def say_hello(self, name):
           return 'Hello, ' + name

       def fibonacci(self, n):
           table = [0, 1]

           for i in range(2, n + 1):
                table.append(table[i - 2] + table[i - 1])

           return table[n]

Источник: http://www.opennet.ru/opennews/art.shtml?num=55466