hyperweb-io / hyperweb-io/ts-codegen

[Proposal] Defining a way to discriminated unions in interfaces

Abierto
#108 2 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
TypeScript
Estrellas
126
Forks
31
Merge medio
19 min
PR fusionados (30 d)
2

Descripción

Currently now when you have an interface or type that use an union, is really hard to access to the desired property.
In the example below you could see how is not possible to access to a specific property from an union (at least you force the type). However defining generics in the root object and make programmers define the expected union is more much friendly programming experience.

![image](https://github.com/CosmWasm/ts-codegen/assets/40375118/7ad96eba-efe6-4134-a1d3-0e44a63dc26a)

The generation process could be something like:
1. Check for Unions in the object, generate as many generic as unions in the root object and start from A to Z.
2. Generate each type of an union separately.
3. Do conditional type until check all types in the union.

Follow the same process with Unions that have nested Unions.

You could find a full example here: https://gist.github.com/j0nl1/22dde0ef0bfaf1c0bea870a0a39e039e

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

El issue no proporciona ningún archivo del repositorio ni ningún punto de entrada de pruebas; comienza reproduciendo el ejemplo de union del gist enlazado y siguiendo dónde la generación de interfaces y tipos gestiona las unions. Compara la salida generada con el comportamiento solicitado para generics y conditional types, incluidas las unions anidadas. Se considera terminado cuando el generador admite el comportamiento propuesto de interfaces para discriminated unions, con cobertura para los casos descritos.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
typescript
Área
tooling
Tipo de issue
Nueva funcionalidad
Dificultad
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.