Рубрики
Без рубрики

Генерировать Typescript из Java

Если вы разрабатываете серверную часть с помощью Java, а интерфейс – с помощью TypeScript, скорее всего, вам это может понадобиться… Помеченный как java, typescript.

Если вы разрабатываете серверную часть с помощью Java, а интерфейс – с помощью TypeScript, скорее всего, вам могут потребоваться одни и те же классы/интерфейсы DTO на обоих концах.

В этом случае, разве не было бы здорово, если бы мы могли определить классы TO в бэкэнде и автоматически генерировать классы Typescript.

Благодаря typescript-generator нам просто нужно настроить плагин maven или создать задачу Gradle.

Для Maven

Добавьте следующий плагин в свой pom-файл


    cz.habarta.typescript-generator
    typescript-generator-maven-plugin
    2.24.612
    
        
            generate
            
                generate
            
            process-classes
        
    
    
        jackson2
        
            com.example.demo.dto.CompanyDto
        
        target/company.ts
        module
        implementationFile
        asClasses
        asEnum
        true
        useLibraryDefinition
    

Когда вы запустите ./mvn clean install , сгенерированный файл TypeScript будет доступен в target/company.ts

Для Gradle

Настройте плагин и создайте задачу

apply plugin: 'cz.habarta.typescript-generator'
buildscript {
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath group: 'cz.habarta.typescript-generator', name: 'typescript-generator-gradle-plugin', version: '2.24.612'
    }
}

generateTypeScript {
    jsonLibrary = 'jackson2'
    classes = [
            'com.example.demo.dto.CompanyDto'
              ]
    outputFile = 'build/company.ts'
    outputKind = 'module'
    outputFileType = 'implementationFile'
    mapClasses = 'asClasses'
    mapEnum = 'asEnum'
    nonConstEnums = true
    optionalProperties = 'useLibraryDefinition'
}

Вы можете запустить задачу Gradle вручную: ./gradlew сгенерировать TypeScript или создать другую задачу в вашей цепочке сборки в зависимости от нее. [1]

В приведенном выше примере я добавил следующие конфигурации, чтобы переопределить поведение по умолчанию.

  • выходной файл : Путь и имя сгенерированного файла TypeScript.
  • тип выходного файла : Формат выходного файла, может быть:

    • файл декларации (.d.ts)
    • файл реализации (.ts)
  • сопоставление классов : Указывает, будут ли классы Java сопоставляться классам или интерфейсам TypeScript. Поддерживаемые значения::

    • как интерфейсы
    • как Классы
  • сопоставить перечисление : Указывает, как будут сопоставляться перечисления. Поддерживаемые значения::

    • as Union – создает псевдоним типа для объединения значений строкового перечисления
    • as Inline Union – создает объединение значений перечисления в местах, где используется перечисление
    • asEnum – создает строковое перечисление. Требуется TypeScript 2.4
    • как перечисление на основе чисел – создает перечисление именованных числовых значений
  • неконстантные перечисления : Если true, сгенерированные перечисления не будут иметь ключевого слова const. Это может быть использовано только в файлах реализации
  • необязательные свойства : Определяет, как свойства определяются как необязательные. Поддерживаемые значения::

    • использовать указанные аннотации – аннотации, указанные с помощью необязательных аннотаций или Требуемых аннотаций параметра
    • используйте определение библиотеки – примеры: @JsonProperty(обязательно) при использовании библиотеки jackson 2 или @XmlElement(обязательно) при использовании библиотеки jaxb
    • все – все свойства являются необязательными

Подробнее о настройке typescript-generator-maven-plugin плагина читайте в документации по конфигурации

Пример с maven можно найти здесь, на GitHub .

Оригинал: “https://dev.to/vuongddang/generate-typescript-from-java-2hb8”