hyperweb-io / hyperweb-io/ts-codegen

[Question] adding undefined for message types

Ouverte
#88 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub
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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.