我有一个Java服务器应用程序,它使用Jackson和反射API通用地序列化数据传输对象(DTO)。例如对于此DTO接口:
package com.acme.library;
public interface Book {
com.acme.library.Author getAuthor();
String getTitle();
}
通过该接口的POJO实现,Jackson将泛化序列化以下实体:
{
"author": { "name": "F. Scott Fitzgerald"},
"title": "The Great Gatsby"
}
从我基于AngularJS的TypeScript应用程序中,将使用HTTP GET接收此有效载荷:
$http.get("http://localhost/books/0743273567")
.success((book: Book) => { ... });
为了能够利用 TypeScript 的强类型特性,我发现自己需要手动编写以下 TypeScript 接口:
module com.acme.library {
export interface Book {
author: com.acme.library.Author;
title: String;
}
}
作为结果,我不得不维护两份相同界面的副本--这最多是繁琐的。 这尤其令人讨厌,因为我想在两个界面上都有相同的javadoc/jsdoc注释,这需要大量的复制和粘贴。
我想找到一种自动化这个过程的机制。
Java是我的主要开发语言。 因此,我想找到一些工具,它能够通过反射API从Java接口声明转换为相关的TypeScript接口。
我在这个领域发现的唯一工具是NPM包ts-java
。 但是,这对我的使用情况来说过于笨重了。 它会将Object层次结构中的方法添加到每个接口中,例如hashCode()
,wait()
,getClass()
等。