grpc / grpc/grpc-node

[Suggestion] provide error types

Open
#2,266 0 comments 0 reactions 0 assignees View on GitHub
package: @grpc/grpc-js
Dominant language
TypeScript
Stars
4.8k
Forks
716
Avg merge
2d 3h
Merged PRs (30d)
10

Description

### Is your feature request related to a problem? Please describe.
Provide error types for dealing and identifing errors. If you promisify the methods and are working with async/await + try/catch, typescript mark errors as unknown.

### Describe the solution you'd like
Something like this:
```
interface Metadata {
get: (key: string) => string[];
}
export interface GRPCError {
message: string;
code: number;
details: string;
metadata: Metadata;
}

export function isGRPCError(err: unknown): err is GRPCError {
let e = err as GRPCError;
return (
typeof e.message === "string" &&
typeof e.code === "number" &&
typeof e.details === "string" &&
typeof e.metadata === "object" &&
typeof e.metadata.get === "function"
);
}
```

```
import { GRPCClient, isGRPCError } from "src";

(async () => {
try {
let resp = await GRPCClient.myMethod();
} catch (err) { // err is unknown
if (isGRPCError(err)) {
console.error("error reason:", err.metadata.get("reason"));
}
}
})();
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.