grpc_tools_node_protoc_tsを使って.protoファイルからTypeScriptの型定義ファイルを生成する
5756 ワード
概要
grpc-toolsを使って.protoファイルからNode.jsのgRPC clientコードを生成するでは、javascriptのmessage定義とclient実装を自動生成しましたが、今回は、これらのjavascriptに対応する型定義ファイル(.d.ts)を自動生成してみたいと思います。
前提
grpc-toolsを使って.protoファイルからNode.jsのgRPC clientコードを生成するの 生成するまでを手元で動作させていることが前提です。
また、プロジェクトディレクトリに今回使用するプラグイン grpc_tools_node_protoc_t
をインストールしておく必要があります。
npm i --save-dev grpc_tools_node_protoc_ts
型定義ファイルを生成する
次のコマンドを実行して型定義ファイルを生成する。
grpc_tools_node_protoc \
--plugin=protoc-gen-ts=./node_modules/.bin/protoc-gen-ts \
--ts_out=. \
hero/hero.proto
生成されるファイルの確認
- hero_grpc_pb.d.ts
- hero_grpc_pb.jsに対する型定義ファイル
- hero_pb.d.ts
- hero_pb.jsに対する型定義ファイル
おまけ
生成されたjs/.d.tsを使って実際にクライアントコードを動かしてみます。
今回サンプルで使用している.protoファイルのserver実装は sample/04-grpc にあるので、事前にこのリポジトリを取得してserverを立ち上げておきます。
クライアントの実装は次のようになりました。
client.ts
import * as grpc from 'grpc';
import * as hero_grpc_pb from './hero/hero_grpc_pb';
import * as hero_pb from './hero/hero_pb';
const client = new hero_grpc_pb.HeroServiceClient(
'127.0.0.1:5001',
grpc.credentials.createInsecure(),
);
const req = new hero_pb.HeroById();
req.setId(1);
client.findOne(req, (error, res) => {
if (error) {
console.log(error);
}
console.log(res.toObject());
});
実際に実行してみます。
$ ts-node client.ts
{ id: 1, name: 'John' }
参考
Author And Source
この問題について(grpc_tools_node_protoc_tsを使って.protoファイルからTypeScriptの型定義ファイルを生成する), 我々は、より多くの情報をここで見つけました https://qiita.com/daikiojm/items/73192c498cf6099cd48a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .