Microsoft/TypeScript

JS output contains imports only used in types when `emitDecoratorMetadata: true`

Open

#42.301 aberto em 12 de jan. de 2021

Ver no GitHub
 (0 comments) (0 reactions) (0 assignees)TypeScript (6.726 forks)batch import
BugDomain: DecoratorsHelp Wanted

Métricas do repositório

Stars
 (48.455 stars)
Métricas de merge de PR
 (Mesclagem média 6d 17h) (9 fundiu PRs em 30d)

Description

Bug Report

🔎 Search Terms

  • emitDecoratorMetadata require
  • emitDecoratorMetadata import

🕗 Version & Regression Information

  • This is the behavior in every version I tried, and I reviewed the FAQ for entries about 3.3.3, 4.1.3

⏯ Playground Link

Playground link with relevant code

💻 Code

import * as vscode from 'vscode';

function LogMethod(
  target: any,
  propertyKey: string | symbol,
  descriptor: PropertyDescriptor
) {
  console.log(target);
  console.log(propertyKey);
  console.log(descriptor);
}

class Demo {
  @LogMethod
  public foo(bar: vscode.Memento) {
    // do nothing
  }
}

const demo = new Demo();

🙁 Actual behavior

The output contains const vscode = __importStar(require("vscode")); when emitDecoratorMetadata: true but not when emitDecoratorMetadata: false

🙂 Expected behavior

As the type of bar as nothing to do with the compiled JS, the import of vscode should not exist regardless of the value of emitDecoratorMetadata

Guia do colaborador