Microsoft/TypeScript

Import ellision emit bug: usage of imports only in keys of interfaces does not result in those imports being elided as type-only

Open

#58 081 ouverte le 4 avr. 2024

Voir sur GitHub
 (0 commentaires) (0 réactions) (0 assignés)TypeScript (6 726 forks)batch import
BugDomain: JS EmitHelp Wanted

Métriques du dépôt

Stars
 (48 455 stars)
Métriques de merge PR
 (Merge moyen 6j 17h) (9 PRs mergées en 30 j)

Description

🔎 Search Terms

import ellision emit

🕗 Version & Regression Information

  • This is the behavior in every version I tried - I saw it in typescript 4.9 and in the playground in typescript 5.4.3.

⏯ Playground Link

https://www.typescriptlang.org/play?importHelpers=true&target=99&module=2#code/JYWwDg9gTgLgBAbwEIEEBKBfOAzKERwDkARgIZSEDcAsAFCiSxwBUcpAzjhBDngYdm5U6dAKYAPRvGAA7GKKjZSAY1Fw03GAGUYpeYjpw4AbVRoAugC447GFFkBzGrSPHBEAHRkoVm3cfOGHRAA

💻 Code

import {BAR} from 'bar';
import * as foo from 'foo';

export interface RootState {
  [BAR]: string;
  [foo.bar]: string;
}

🙁 Actual behavior

When compiled to ESNext module:

import { BAR } from 'bar';
import * as foo from 'foo';

when compiled to AMD with importHelpers it's interesting that __importStar appears

define(["require", "exports", "tslib", "bar", "foo"], function (require, exports, tslib_1, bar_1, foo) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    foo = tslib_1.__importStar(foo);
});

🙂 Expected behavior

output should be an entirely empty module, e.g. AMD should be

define(["require", "exports"], function (require, exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
});

ESNext should be

export {}

Additional information about the issue

No response

Guide contributeur