You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

gRPC TypeScript代码生成后遇TS2345类型不兼容错误求助

gRPC TypeScript类型不匹配错误解决方案

问题背景

使用以下npm脚本命令生成gRPC TypeScript代码:

"proto": "npx grpc_tools_node_protoc --js_out=import_style=commonjs,binary:./grpc/client --grpc_out=./grpc/client --plugin=protoc-gen-grpc=`which grpc_tools_node_protoc_plugin` -I ./grpc/proto ./grpc/proto/*.proto && npx grpc_tools_node_protoc --plugin=protoc-gen-ts=`which protoc-gen-ts` --ts_out=./grpc/client -I ./grpc/proto ./grpc/proto/*.proto",

执行后出现TypeScript编译错误:

Services/SchoolService.ts:205:23 - error TS2345: Argument of type 'ISchoolService' is not assignable to parameter of type 'ServiceDefinition<UntypedServiceImplementation>'.
  Index signature for type 'string' is missing in type 'ISchoolService'.

205     server.addService(SchoolService, new ServerImpl());

环境信息

  • 系统:Ubuntu 24.04
  • Node.js版本:22.4.1(apt安装)
  • 编译器:g++ 13.2.0
  • 依赖版本:
"grpc_tools_node_protoc_ts": "^5.3.3",
"@grpc/grpc-js": "^1.10.10",

解决方案

1. 修改代码生成命令

生成代码时需指定grpc_js模式,适配@grpc/grpc-js的类型系统,修改后的npm脚本:

"proto": "npx grpc_tools_node_protoc --js_out=import_style=commonjs,binary:./grpc/client --grpc_out=grpc_js:./grpc/client --plugin=protoc-gen-grpc=`which grpc_tools_node_protoc_plugin` -I ./grpc/proto ./grpc/proto/*.proto && npx grpc_tools_node_protoc --plugin=protoc-gen-ts=`which protoc-gen-ts` --ts_out=grpc_js:./grpc/client -I ./grpc/proto ./grpc/proto/*.proto",

核心改动:

  • --grpc_out=grpc_js:./grpc/client:生成适配@grpc/grpc-js的JS服务代码
  • --ts_out=grpc_js:./grpc/client:生成带字符串索引签名的TS类型定义,匹配ServiceDefinition要求

2. 调整服务注册代码

生成的TS文件中,正确的服务定义导出名称应为[服务名]ServiceService,修改注册行:

server.addService(SchoolServiceService, new ServerImpl());

注:可查看生成的.ts文件确认具体导出名称,通常会和ISchoolService同文件导出。

3. 确认依赖版本匹配

当前grpc_tools_node_protoc_ts@5.3.3与@grpc/grpc-js@1.10.10版本兼容,若问题仍存在,可重新安装依赖确保版本锁定:

npm install grpc_tools_node_protoc_ts@5.3.3 --save-dev

原因说明

未指定grpc_js模式时,生成的类型是针对旧版grpc库的,缺少@grpc/grpc-js要求的字符串索引签名,导致类型不兼容。添加grpc_js参数后,生成的类型会完全匹配ServiceDefinition的结构要求。

内容的提问来源于stack exchange,提问作者khteh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 07:22:37