microsoft / microsoft/TypeScript
Incorrect error message on export assignment in `.d.ts` file
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Go
- Estrellas
- 111k
- Forks
- 14.3k
- Merge medio
- 1 d 19 h
- PR fusionados (30 d)
- 117
Descripción
TypeScript Version: 3.5.3
Search Terms:
An export assignment cannot be used in a namespace.
Code
This is pretty niche, but I think it has general implications...
The current /lib/typescript.d.ts file is modelled as essentially a CommonJS file where at the end of the file, it has export = ts; which exports the whole namespace. The actual /lib/typescript.js though will place itself in the global scope as ts if it isn't loaded as a CommonJS module. In order to express that ts is available as a global variable, it requires code like this to be placed in a .d.ts file:
import * as _ts from "typescript";
declare global {
namespace ts {
export = _ts;
}
}
Other methods of expressing this, like declare var ts: typeof _ts; only make the function shape of ts available, while the interfaces and type aliases and other type information is not accessible.
Expected behavior:
No errors.
Actual behavior:
The error TS1063: An export assignment cannot be used in a namespace occurs, but in VSCode, if the file is named globals.d.ts this error does not occur. 🤷♂ In all cases the code above does work like expected, making both the functional and type exports of the namespace available for code to be checked against.
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 reproduciendo el diagnóstico con el fragmento de declaración proporcionado y, después, compáralo con el comportamiento cuando el archivo se llama globals.d.ts. Lee las declaraciones relacionadas en /lib/typescript.d.ts y el contexto de ejecución en /lib/typescript.js. Se considera terminado cuando el patrón válido no informa de ningún error y conserva tanto las exportaciones funcionales como las de tipos.
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