* Only bind module.exports if no local definition exists Note that this uses `lookupSymbolForNameWorker`, which is really a best-effort check since it only knows about symbols that it has already encountered. As a side-effect, even when `module` is bound as part of a `module.exports` reference, it only declares it once instead of one declaration per reference. * Only type module.exports inside module files It is an error inside script files, but the binder sometimes creates a ModuleExports symbol because we doesn't know whether we have a commonjs module until after binding is done. * Only bind module.exports in a commonjs module Note that this, too, is a best-effort check since evidence of commonjs-ness may be found after a *reference* to module.exports. (A reference to module.exports alone is not enough evidence that a file is commonjs. It has to have an assignment to it.) |
||
---|---|---|
.. | ||
ambient | ||
async | ||
classes | ||
constEnums | ||
controlFlow | ||
declarationEmit | ||
decorators | ||
dynamicImport | ||
emitter | ||
enums | ||
es6 | ||
es7 | ||
es2017 | ||
es2018 | ||
es2019/importMeta | ||
expressions | ||
externalModules | ||
functions | ||
interfaces | ||
internalModules | ||
jsdoc | ||
jsx | ||
moduleResolution | ||
parser | ||
references | ||
salsa | ||
scanner | ||
statements | ||
Symbols | ||
types | ||
typings | ||
fixSignatureCaching.ts |