Microsoft/TypeScript

Destructuring exported array with `require` causes error

Offen

#44.658 geöffnet am 18.06.2021

 (3 Kommentare) (1 Reaktion) (0 zugewiesene Personen)TypeScript (13.395 Forks)batch import
BugDomain: JavaScriptHelp Wanted

Repository-Metriken

Stars
 (108.860 Sterne)
PR-Merge-Metriken
 (PR-Metriken ausstehend)

Beschreibung

Bug Report

I'm progressively adding TypeScript to an existing JS codebase. In several of our files, there is an existing pattern of exporting arrays like so: module.exports = [A, serializeA]. When requiring and destructuring this export like const [A] = require('./a'), I get an unexpected error Module '"./a"' has no exported member 'A'. ts(2305) which I believe to be a bug.

🔎 Search Terms

module has no exported member TS2305

🕗 Version & Regression Information

  • This is the behavior in every version I tried, and I reviewed the FAQ for entries about module.exports

⏯ Playground Link

Not sure how to repro this in a Playground work Workbench since I believe it requires files and exports/requries.

💻 Code

// a.js
class A {}
module.exports = [A]

// b.js
const [A] = require('./a') // Module '"./a"' has no exported member 'A'. ts(2305)

🙁 Actual behavior

The compiler shows an error

🙂 Expected behavior

The compiler shows no error and the exported array is correctly destructured and the type infered.

Contributor Guide