web-dev-qa-db-fra.com

Erreur de décorateurs expérimentaux Visual Studio 2015 RC TypeScript

Comment désactiver l'erreur suivante dans VS2015?

TS1219 La prise en charge expérimentale des décorateurs est une fonctionnalité susceptible d'être modifiée dans une version ultérieure. Spécifiez '--experimentalDecorators' pour supprimer cet avertissement.  

enter image description here

J'essaie d'utiliser des annotations Angular2. J'ai essayé d'ajouter les éléments suivants manuellement au fichier de projet sans succès:

<TypeScriptExperimentalDecorators>True</TypeScriptExperimentalDecorators>

J'ai également installé l'extension bêta de TypeScript 1.5.0.

29
Graeme

Visual Studio 2015 prend en charge les fichiers tsconfig à partir de TypeScript version 1.8. Créez le fichier tsconfig.json à la racine de votre projet et ajoutez l'option de compilation experimentalDecorators.

Exemple:

{
  "compileOnSave": true,
  "compilerOptions": {
    "module": "commonjs",
    "sourceMap": true,

    "experimentalDecorators": true
  }
}

Pour les anciennes versions:

https://github.com/Microsoft/TypeScript/issues/3934

Si vous avez un fichier de projet, tsconfig ne sera pas honoré. le fichier de projet est prioritaire. Nous continuons de purger l’histoire d’intégration entre un projet de VS et un tsconfig, car vous pouvez spécifier des options de compilation dans les deux cas.

pour désactiver le message d'erreur, cliquez avec le bouton droit de la souris sur le fichier du projet, déchargez le projet, puis cliquez avec le bouton droit de la souris sur Editer le fichier du projet. À la fin du fichier, il devrait y avoir une section de configuration, ajoutez:

<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
  ....
  <TypeScriptExperimentalDecorators>true</TypeScriptExperimentalDecorators>
</PropertyGroup>

sauvegarder et recharger.

Vous pouvez également avoir besoin de TypeScriptEmitDecoratorMetadata pour mapper --emitDecroatorMetadata

36
v_b

Mettez à niveau votre IDE vers la dernière version. Créez ensuite le fichier tsconfig.json à la racine de votre projet si vous n'en avez pas déjà un. Ajoutez ensuite experimentalDecorators en tant qu'option de compilateur.

Exemple:

{
  "version": "1.5.0",
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "declaration": false,
    "noImplicitAny": false,
    "removeComments": true,
    "noLib": false,
    "emitDecoratorMetadata": true,
    "sourceMap": true,
    "listFiles": true,
    "outDir": "dist",
    "experimentalDecorators": true
  }
}
27
un33k

Dans Visual Studio 2015, vous devez activer TypeScriptExperimentalDecorators dans votre fichier de projet TypeScript. 

Déchargez le fichier de projet puis ajoutez cette ligne:

<TypeScriptExperimentalDecorators>True</TypeScriptExperimentalDecorators>

J'ai copié dans le PropertyGroup complet afin que vous puissiez trouver où l'ajouter:

<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
  <TypeScriptRemoveComments>false</TypeScriptRemoveComments>
  <TypeScriptSourceMap>true</TypeScriptSourceMap>
  <TypeScriptTarget>ES5</TypeScriptTarget>
  <TypeScriptJSXEmit>None</TypeScriptJSXEmit>
  <TypeScriptCompileOnSaveEnabled>True</TypeScriptCompileOnSaveEnabled>
  <TypeScriptNoImplicitAny>False</TypeScriptNoImplicitAny>
  <TypeScriptModuleKind>System</TypeScriptModuleKind>
  <TypeScriptOutFile />
  <TypeScriptOutDir />
  <TypeScriptGeneratesDeclarations>False</TypeScriptGeneratesDeclarations>
  <TypeScriptNoEmitOnError>True</TypeScriptNoEmitOnError>
  <TypeScriptMapRoot />
  <TypeScriptSourceRoot />
  <TypeScriptExperimentalDecorators>True</TypeScriptExperimentalDecorators>
</PropertyGroup>
7
liima

J'ai trouvé que je devais ajouter un tag pour les métadonnées

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
    <!--other -->
    <TypeScriptExperimentalDecorators>True</TypeScriptExperimentalDecorators>
    <TypeScriptEmitDecoratorMetadata>True</TypeScriptEmitDecoratorMetadata>
</PropertyGroup>
4
JimmyW

J'ai rencontré ce problème aussi. 

Rencontré alors que:

  • Débuter avec Angular2 - 2.0.0-beta.17

Mon environnement est: 

  • Visual Studio 2015 Update 3
  • TypeScript pour Microsoft Visual Studio Extension 1.8.34.0
  • Node version v6.2.2 (cmdline "> node --version" pour trouver la vôtre)
  • Projet principal ASP.NET

Ma solution était:

  • Décharger le projet
  • Ajouter la ligne suivante au fichier de configuration du projet
<TypeScriptExperimentalDecorators>True</TypeScriptExperimentalDecorators>

Si vous ne trouvez pas le groupe de propriétés correct dans le fichier csproj ou dans le fichier vous souhaitez que l'environnement VS ajoute automatiquement le groupe de propriétés approprié, puis basculez simplement le bouton "Produire sorties lors de la génération" sous propriétés du projet> Construire, puis exécutez le projet décharger.

  • Enregistrez le fichier et rechargez le projet.
  • Fermez Visual Studio, puis lancez et rouvrez la solution et le projet.

À noter ici, je n'ai pas à ce stade de fichier tsconfig.json. Ajouter un fichier tsconfig.json provoque le retour du problème.

Pour résoudre davantage le problème après avoir ajouté un fichier tsconfig.json, j’ai suivi les instructions pour configurer TypeScript avec .NET Core situé ici sous "Installer les typings pour les dépendances" et "Mettre à jour tsconfig.json".

Pour résumer (mais lisez-le vous-même):

  • Ouvrez cmd et accédez au dossier src de votre projet
  • Exécutez "npm install -g typings" (je n'aime pas cela. Les autres options sont les bienvenues)
  • Ajoutez "experimentalDecorators": true à compilerOptions dans le fichier tsconfig.json
  • Vérifiez votre solution à nouveau. Le problème décrit ci-dessus devrait maintenant avoir disparu.

Pour le contexte. En plus de cette erreur, je rencontrais également les problèmes suivants: 

Les étapes ci-dessus ont résolu l'erreur spécifique ci-dessus pour moi. J'espère que ça aide.

1
David Hall

http://www.cmichaelgraham.io/aurelia-TypeScript-samples/vs2015-samples/vs2015-samples.html

<TypeScriptToolsVersion>1.7</TypeScriptToolsVersion>
...........
<TypeScriptAdditionalFlags> $(TypeScriptAdditionalFlags) --emitDecoratorMetadata --experimentalDecorators </TypeScriptAdditionalFlags>
1
Ilya

En utilisant simplement Nuget Package Manager, j'ai pu mettre à niveau mon TypeScript à la dernière version et cela a résolu le problème.

Ceci est lié aux conflits de version TypeScript de ce que je peux voir.

Vérifiez votre version de TypeScript et effectuez les mises à niveau ou rétrogradations appropriées pour résoudre le problème.

0
Kenneth O'kwu

J'ai eu le même problème. J'ai pas mal de choses à partager avec mes découvertes. Je travaille aussi sur Angular 2 (ng-book-2).

Qu'est-ce que j'utilise?

IDE: WebStorm

TypeScript: 1.6.2

Quand: le 10 octobre 2015

Que suis-je en train de faire?

J'ai essayé de compiler mes applications pour app.js; Cependant, je rencontre cette erreur:

erreur TS5052: l'option 'emitDecoratorMetadata' ne peut pas être spécifiée sans spécifier l'option 'experimentalDecorators'.

C'était mon tsconfig.json AVANT

{
    "version": "1.5.0",
    "compilerOptions": {
        "target": "es5",
        "module": "commonjs",
        "declaration": false,
        "noImplicitAny": false,
        "removeComments": true,
        "noLib": false,
        "emitDecoratorMetadata": true
    },
    "filesGlob": [
        "./**/*.ts",
        "!./node_modules/**/*.ts"
    ],
    "files": [
        "./app.ts",
        "./typings/angular2/angular2.d.ts",
        "./typings/es6-promise/es6-promise.d.ts",
        "./typings/rx/rx-lite.d.ts",
        "./typings/rx/rx.d.ts",
        "./typings/tsd.d.ts"
    ]
}

Ceci est mon tsconfig.json APR&EGRAVE;S

{
    "version": "1.6.2",
    "compilerOptions": {
        "target": "es5",
        "module": "commonjs",
        "declaration": false,
        "noImplicitAny": false,
        "removeComments": true,
        "noLib": false,
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true
    },
    "filesGlob": [
        "./**/*.ts",
        "!./node_modules/**/*.ts"
    ],
    "files": [
        "./app.ts",
        "./typings/angular2/angular2.d.ts"
    ]
}

Changer tsconfig.json d'avant en après résout efficacement deux problèmes. L'un est ce qui précède et l'autre est le problème ci-dessous. Ce dernier problème est discuté ici angular2 avec ES6 ne doit pas faire référence à es6-promise

tapings/es6-promise/es6-promise.d.ts (11,15): erreur TS2300: identificateur en double 'Promise' . tapings/es6-promise/es6-promise.d.ts (42,16): erreur TS2300: identificateur en double 'Promise' . tapings/es6-shim/es6-shim.d.ts (475,11): erreur TS2300: identificateur en double 'Promise' . typings/es6-shim/es6-shim.d.ts (552,13): erreur TS2300: identificateur en double 'Promise'.

0
choopage - Jek Bao

Je dois ajouter ce qui suit dans le fichier settings.json de vscode pour supprimer l'avertissement.

"javascript.implicitProjectConfig.experimentalDecorators": true

VSCode -> Préférences -> Paramètres

 enter image description here

0
Zub

Cette erreur m'est venue parce que j'ai essayé par erreur de créer un nouveau fichier avec l'extension ".js" au lieu de ".ts". Il est parti après avoir changé l'extension de fichier en ".ts". 

0
Xchai

J'ai résolu ce problème en modifiant TypeScriptToolsVersion dans mon fichier csproj afin qu'il corresponde à la version de TypeScript définie dans packages.json (actuellement 2.0.2).

<TypeScriptToolsVersion>2.0.2</TypeScriptToolsVersion>
0
JMK