hyperweb-io / hyperweb-io/ts-codegen
[Question] adding undefined for message types
- Langage dominant
- TypeScript
- Étoiles
- 126
- Forks
- 31
- Merge moyen
- 19 min
- PR mergées (30 j)
- 2
Description
I have an enum:
```rs
pub enum MintStatus {
Pending{},
Success{token_id: String},
Error{message: String},
}
```
This enum is a response to a query in my contract, when I use ts-codegen, it parses it to this:
```ts
export type MintStatus = {
pending: {};
} | {
success: {
token_id: string;
};
} | {
error: {
message: string;
};
};
```
To me it feels wrong, because this forces me to cast my `MintStatus` type into `any`, in order to do something like this:
```ts
let mintStatus = query() as any;
if(mintStatus.success) {
let tokenId = mintStatus.success.token_id;
}
```
I would suggest to change the parsing into something like this:
```ts
export type MintStatus = {
pending: {} | undefined;
success: {
token_id: string;
} | undefined;
error: {
message: string;
} | undefined;
};
```
This change will allow me to avoid the `any` cast, and allow me to get TS work correctly for this type.
Right now it doesn't give me any auto completion and complains when I do not cast to any.
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Piste de recherche
Commencez par suivre les points d’entrée du parsing des enum et de la génération de types TypeScript dans ts-codegen ; l’issue ne nomme pas de fichiers ni de tests spécifiques. Comparez la sortie actuelle de conversion d’enum en union de Rust avec la forme demandée comportant des membres optionnels, puis ajoutez une couverture pour les variantes Pending, Success et Error afin que les types générés correspondent au comportement convenu.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- rust, typescript
- Domaine
- tooling
- Type d'issue
- Fonctionnalité
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100