microsoft / microsoft/TypeScript
In a JS file, using module.exports in a file changes the type of module from NodeModule to typeof import("...")
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Go
- Estrellas
- 111k
- Forks
- 14.3k
- Merge medio
- 2 d 4 h
- PR fusionados (30 d)
- 132
Descripción
Bug Report
When using a JS file with @types/node, the type of module changes from NodeModule to something strange (typeof import("/sandbox/not_working");) after including a line like module.exports = {}.
🔎 Search Terms
module.exports, NodeModule, typeof import
🕗 Version & Regression Information
- This is the behavior in every version I tried, and I reviewed the FAQ for entries about
4.2.3
⏯ Playground Link
CodeSandbox link with relevant code
💻 Code
/// <reference types="node"/>
// INFO: This is JS
/**
* @param {NodeModule} aModule
*/
function createLogger(aModule) {}
createLogger(module); // INFO: module here is triggering the error.
// INFO: THIS LINE BREAKS IT
module.exports = {};
🙁 Actual behavior
var module: {
"\"/sandbox/not_working\"": typeof import("/sandbox/not_working");
}
Argument of type '{ "\"/sandbox/not_working\"": typeof import("/sandbox/not_working"); }'
is not assignable to parameter of type 'NodeModule'.
Type '{ "\"/sandbox/not_working\"": typeof import("/sandbox/not_working"); }'
is missing the following properties from type 'NodeModule': require, id, filename, loaded, and 3 more.
ts(2345)
🙂 Expected behavior
I expected module to always be of type NodeModule.
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
Empieza por el ejemplo de CodeSandbox y su reproducción en not_working.js, centrándote en cómo module.exports = {} cambia el tipo inferido de module. Confirma el comportamiento esperado de NodeModule y añade una prueba de regresión que muestre que createLogger(module) sigue siendo válido después de la asignación de exportación.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- javascript, 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