microsoft / microsoft/TypeScript
Non-exported recursive type alias is inlined until it falls back to any in declarations
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Go
- Estrellas
- 111k
- Forks
- 14.4k
- Merge medio
- 1 d 19 h
- PR fusionados (30 d)
- 117
Descripción
🔎 Search Terms
declarations recursive types
🕗 Version & Regression Information
- This is the behavior in every version I tried (before 4.4 it was either a stack overflow crash or an error on the recursive type)
⏯ Playground Link
💻 Code
// @declaration: true
// @filename: utils.ts
type Recursive<T> = T extends Array<infer V>? Recursive<V>: T;
export const f = <T>(): Recursive<T> => { return null! }
// @filename: index.ts
import { f } from './utils';
export const a = f;
🙁 Actual behavior
In declarations, the type for a is printed as a: () => T extends (infer V)[] ? V extends (infer V)[] ? V extends (infer V)[] ? V extends (infer V)[] ? V extends (infer V)[] ? V extends (infer V)[] ? V extends (infer V)[] ? V extends (infer V)[] ? V extends (infer V)[] ? V extends (infer V)[] ? V extends (infer V)[] ? any : V : V : V : V : V : V : V : V : V : V : T;
🙂 Expected behavior
Recursive can't be represented without falling back to any (as seen above) so it should just be an error instead of silently to any
Additional information about the issue
Related to #55832
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Reproduce la salida de declaraciones del enlace de Playground usando utils.ts e index.ts, centrándote en la función genérica exportada y en la declaración de a. Rastrea cómo se representa el alias Recursive no exportado cuando se emiten las declaraciones. La tarea estará terminada cuando este caso informe de un error en lugar de producir silenciosamente un tipo profundamente expandido que termina recurriendo a any.
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
- 42/100