microsoft / microsoft/TypeScript

JSDoc import integration doesn't support return-style AMD modules

Aperta
#38,416 3 commenti 0 reazioni 1 assegnatario Vedi su GitHub

@sandersn ci sta già lavorando.

Dal 5/6/2020.

Awaiting More Feedback
Lingua principale
Go
Stelle
111k
Fork
14.3k
Merge medio
2g 4h
PR unite (30g)
132

Descrizione

TypeScript Version: 4.0.0-dev.20200508
also 3.8.3 (and presumably any other version)

Search Terms:
require, AMD, exports, import, JSDoc, module

Code

mod.js

// @ts-check

define(function () {
  // (1) this checks
  // exports.number = 12;

  // (2) this doesn't check
  // var exports = {
  //   number: 12
  // };
  // return exports;

  // (3) this also doesn't check
  return {
    number : 12
  }
});

usage.js

// @ts-check

define(function(require) {
  /** @type {import('mod')} */
  var Mod = require('mod');
  Mod.number;
});

My tsconfig is configured for JS/AMD/es5/noEmit:

    "allowJs": true,
    "module": "AMD",
    "target": "es5",
    "noEmit": true,

Expected behavior:

The import in the @type annotation in usage.js is correctly resolved for all three AMD module variants of mod.js .

Actual behavior:

Only the first variant, where number is explicitly added to exports works.
For the second and third variants, I get a compile error.

src/usage.js:4:23 - error TS2306: File 'd:/ns-prog/ts-jsdoc/src/mod.js' is not a module.

4     /** @type {import('mod')} */

Considering both (2) and (3) are valid AMD modules, I would expect this to work.

Note that JSDoc supports @exports annotation. Perhaps that could be utilized in the TypeScript-JSDoc integration?

Playground Link: N/A (I didn't see an option to have multiple files.)

Related Issues:
There's a StackOverflow question from 2016 https://stackoverflow.com/questions/37035462/importing-amd-modules-that-don-t-use-exports-with-typescript, but I didn't find any issue for it here.

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.