https://github.com/manland/j2ts
A simple java to ts generator
https://github.com/manland/j2ts
build cli dto java js js-api ts
Last synced: 10 months ago
JSON representation
A simple java to ts generator
- Host: GitHub
- URL: https://github.com/manland/j2ts
- Owner: manland
- Created: 2016-11-27T20:53:07.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2018-11-06T12:08:02.000Z (about 7 years ago)
- Last Synced: 2025-03-06T17:01:47.950Z (10 months ago)
- Topics: build, cli, dto, java, js, js-api, ts
- Language: JavaScript
- Size: 34.2 KB
- Stars: 7
- Watchers: 1
- Forks: 5
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# j2ts
> A simple java to ts generator, designed for DTO.
* [Install](#install)
* [Js Api](#js-api)
* [CLI](#cli)
* [Example](#example)
* [Development](#development)
* [Contribution](#contribution)
## Install
> npm install j2ts
_`j2ts` use `javap` to extract meta-data of your java classes. So, you need to have it in on your system (installed with jdk)._
## Js Api
```js
j2ts(path, options)
.then(res => console.log(res));
```
* path: string = [glob](https://github.com/isaacs/node-glob#glob-primer) path to java.class(es)
* options: object
* generateHasClass: boolean = optional, false by default, generate ts file with interface (default) or class
* dest: string = optional, null by default, destination path to put ts files, if not set, j2ts don't write files
return a promise with an array of {name: className, str: resultTs}.
## CLI
After install, add a script in your `package.json` :
```json
{
"scripts": {
"j2ts": "j2ts -f \"[glob]\" -d \"path\""
}
}
```
And run `npm run j2ts`. To see all options run `j2ts --help`
## Example
If you start with User java class :
```java
package dto;
public class User {
private String username;
private Integer stats;
public User() {
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getStats() {
return stats;
}
public void setStats(Integer stats) {
this.stats = stats;
}
}
```
You compile it with java :
> javac "dto/User.java"
Pass `dto/User.class` through `j2ts` :
> j2ts -f "./dto/*.class" -d "./dto"
You will obtain `dto/User.ts` :
```ts
export interface User {
username: string;
stats: number;
}
```
And an `index.ts` containing a reference to all exported members :
```ts
export * from './User';
```
Now you can use it in your project when you request user from server :
```ts
import {User} from './dto';
fetch('myserver/user/1').then((user: User) => ...);
```
Test it against all your big, fat and complicated dto in real projects ;) And please, open issues if something goes wrong.
## Development
> clone
> npm install
> npm run test
## Contribution
This repository ❤ pull-request ;) Make sure no one else work on same feature by opening an issue!