Generate TypeScript enum and interface with proto buffer.
npm install -g tsbuf
tsbuf example/proto -o example/typescript/global
# or
tsbuf example/proto -o example/typescript/module -m module
See example/
$ tsbuf -h
Usage: tsbuf [options] <inputPath>
protobuf-parser
Generate TypeScript interface with Protobuf.
Options:
-V, --version output the version number
-o, --output <output> output path (default: ".")
-m, --mode <mode> "global": Global Definition, "module": Module Definition (default: "global")
-h, --help output usage information
syntax = "proto3";
service MyService {
rpc rpcMethod(Fruit) returns (Package) {}
}
enum Fruit {
Apple = 0;
Banana = 1;
}
message Package {
string id = 1;
float price = 2;
}
Will be transformed to
interface MyService {
rpcMethod: {
request: Request;
response: Response;
};
}
declare enum Fruit {
Apple = 0,
Banana = 1,
}
interface Package {
id: string;
price: number;
}
Or TypeScript module
export interface MyService {
rpcMethod: {
request: Request;
response: Response;
};
}
export enum Fruit {
Apple = 0,
Banana = 1,
}
export interface Package {
id: string;
price: number;
}
Create specified types using TypeScript as follows.
import { MyService } from '...';
import { Observable } from 'rxjs';
interface BaseServiceDefinition {
[key: string]: {
request: any;
response: any;
};
}
type RxService<T extends BaseServiceDefinition> = {
[K in keyof T]: (request: T[K]['request']) => Observable<T[K]['response']>;
};
/**
* `RxService<MyService>` equals:
*
* interface {
* rpcMethod(request: Request): Observable<Response>;
* }
*
**/
- Basic Support
- ExtendedType Field
- Cli
- Oneof Field
- Map Field
- Nested Type
- Generate Global Declaration
- Import (Generate Module)
- Other Options
MIT