microsoft / microsoft/TypeScript
In a JS file, using module.exports in a file changes the type of module from NodeModule to typeof import("...")
Personne n'a encore pris cette issue.
- Langage dominant
- Go
- Étoiles
- 111k
- Forks
- 14.3k
- Merge moyen
- 2 j 4 h
- PR mergées (30 j)
- 132
Description
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.
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par l’exemple CodeSandbox et sa reproduction dans not_working.js, en vous concentrant sur la manière dont module.exports = {} modifie le type inféré de module. Confirmez le comportement attendu de NodeModule et ajoutez un test de régression montrant que createLogger(module) reste valide après l’affectation de l’exportation.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- javascript, typescript
- Domaine
- compilers
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100