microsoft / microsoft/TypeScript
Augmenting external module that is re-exported?
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
TypeScript Version: 2.5.2
Code
This can't be demonstrated with a simple 1-file code example so I made a trivial project to demo it:
https://github.com/chriseppstein/typescript_module_augmentation_bug
Instructions for how to run the demo and work around the issue are included on the README there.
When I include an interface in a node module's main index.ts file, then it is open for merging with a declare module "my_npm_module" {} but when I move that interface into a local submodule and export it in the main index.ts with a export * from "./local_module"; then the downstream consumer breaks.
Expected behavior:
It seems to me that the point of being able to export from other modules is to keep downstream consumers protected from internal refactors and maintain an existing public API. So I expect to be able to augment an interface and have it behave the same whether or not it has been re-exported.
Actual behavior:
It looks like the interface gets forked into two definitions, the downstream module sees only the interface surface that was added and the upstream module only sees the interface surface it defined.
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
Comienza con el repositorio vinculado typescript_module_augmentation_bug y sigue las instrucciones de su README para reproducir el problema. Compara el comportamiento de la augmentación cuando la interfaz se declara en index.ts con el comportamiento cuando se reexporta desde un submódulo local. Se considera terminado cuando los módulos upstream y downstream ven una única interfaz aumentada coherente.
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