运行 wrangler types 会生成运行时类型,包括 Service 和 DurableObjectNamespace 类型,每种类型都接受一个类型参数,分别对应 WorkerEntrypoint 或 DurableObject 类型。
利用高阶类型,我们会自动生成客户端 stub 类型(例如,强制所有方法为 async)。
wrangler types 还会为 env 对象生成类型。你可以传入被调用 Worker 或 Durable Object 的配置文件路径,以便生成的类型包含 Service 和 DurableObjectNamespace 类型的类型参数。
例如,如果你的客户端 Worker 绑定了 ../sum-worker/ 中的 Worker 和 ../counter/ 中的 Durable Object,应通过运行以下命令为客户端 Worker 的 env 生成类型:
npx wrangler types -c ./client/wrangler.jsonc -c ../sum-worker/wrangler.jsonc -c ../counter/wrangler.jsoncyarn wrangler types -c ./client/wrangler.jsonc -c ../sum-worker/wrangler.jsonc -c ../counter/wrangler.jsoncpnpm wrangler types -c ./client/wrangler.jsonc -c ../sum-worker/wrangler.jsonc -c ../counter/wrangler.jsonc这将生成包含以下内容的 worker-configuration.d.ts 文件:
interface Env {
SUM_SERVICE: Service<import("../sum-worker/src/index").SumService>;
COUNTER_OBJECT: DurableObjectNamespace<
import("../counter/src/index").Counter
>;
}现在,像 env.SUM_SERVICE.sum 这样的 RPC 方法类型将暴露给客户端 Worker。
export default {
async fetch(req, env, ctx): Promise<Response> {
const result = await env.SUM_SERVICE.sum(1, 2);
return new Response(result.toString());
},
} satisfies ExportedHandler<Env>;