microsoft / microsoft/TypeScript

Type inference regression due to circular type definition

Abierto
#36,220 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Needs Investigation
Lenguaje dominante
Go
Estrellas
111k
Forks
14.3k
Merge medio
2 d 4 h
PR fusionados (30 d)
132

Descripción

TypeScript Version: 3.8.0-dev.20200115

Search Terms:
circular type

Code

Replace

type DeepPartial<T> =
    T extends Message ? PartialMessage<T> :
    T;

type PartialMessage<T extends Message> = { [K in keyof T]?: DeepPartial<T[K]> };

with

type DeepPartial<T> =
    T extends Message ? { [K in keyof T]?: DeepPartial<T[K]> } :
    T;

Expected behavior:

Both works.

Actual behavior:

Type 'typeof SubMessage' is not assignable to type 'FieldValueType<SubMessage>'.
  The types returned by 'from(...)' are incompatible between these types.
    Property 'n' is missing in type 'Message' but required in type 'SubMessage'.(2322)

Playground Link:

Without circular type definition

With circular type definition

Related Issues:

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Empieza reproduciendo los dos ejemplos de Playground con TypeScript 3.8.0-dev.20200115 y, después, comprueba si el problema sigue produciéndose en la última versión publicada o en typescript@next. Se considera terminado cuando las definiciones DeepPartial circulares y no circulares pasan la comprobación de tipos sin el error de asignabilidad indicado.

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

Evaluación

Stack tecnológico
typescript
Área
compilers
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
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.