microsoft / microsoft/TypeScript

Inferred type is not the same as what's passed in original generic type.

Abierto
#42,516 6 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Bug Domain: check: Type Inference Effort: Difficult Help Wanted
Lenguaje dominante
Go
Estrellas
111k
Forks
14.3k
Merge medio
2 d 4 h
PR fusionados (30 d)
132

Descripción

Bug Report

🔎 Search Terms

infer, generic

🕗 Version & Regression Information
  • This is a crash
  • This changed between versions _________ and _________
  • This is the behavior in every version I tried, and I reviewed the FAQ for entries about infer.
  • I was unable to test this on prior versions because _______
⏯ Playground Link

https://www.typescriptlang.org/play?ts=4.1.3#code/C4TwDgpgBACgTgezAYQQOwM7DgVwMbAJwA8AKlALxQCGaIAfJQFBRQA+UA3lGhAO5QAFADpR1OAHMMALhp0A2gF0AlLPIAyKAgBGAKwgEoAXxbsuQ1VHImmoSFACyIAJJoAZhBKlGVchAAewBBoACYYsIgo6Fi4BETEAJbunlAAaowA-GlQsgDk-gW5TLbg0KnllEKCypSMMUkSNRyC1bU8OAC22p7KxXbQABqVTq4eJPBIqJjY+IQk5en0TEA

Playground link with relevant code

💻 Code
// The variable names are meaningless, they are simplified from vue project.
type PropConstructor<T = any> =
  | { new (...args: any[]): T & object }
  | { (): T }

type MyInfer<T> = T extends PropConstructor<infer V> ? V : 'xxx'

type VVV = (() => string) | (() => number)

type X = MyInfer<PropConstructor<VVV>>

🙁 Actual behavior
type X = (() => string) | (() => number) | ((() => string) & object) | ((() => number) & object)
🙂 Expected behavior
type X = (() => string) | (() => number))

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

Comienza ejecutando los ejemplos vinculados de TypeScript Playground y comparando el tipo inferido X con los tipos real y esperado indicados. El trabajo está completo cuando el comportamiento de inferencia genérica para MyInfer<PropConstructor> coincida con la unión esperada sin las intersecciones adicionales.

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
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Estancado
Claridad
Bien especificado
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.