bingles
bingles

Reputation: 12183

VSCode: Is it possible to suppress experimental decorator warnings

In VSCode, I get the error:

"Experimental support for decorators is a feature that is subject to change in a future release. Specify '--experimentalDecorators' to remove this warning."

I can add the --experimentalDecorators flag to my tasks.json file to remove this error on build, but I can't seem to remove it from my intellisense or error list when I load VSCode.

Is there a way to do this?

Upvotes: 39

Views: 33174

Answers (15)

nouman98
nouman98

Reputation: 1

Below answer for VSCode version 1.60.12

  1. press "ctrl" + ",".
  2. type "settings.json".
  3. see this image to click on settings..
  4. paste "js/ts.implicitProjectConfig.experimentalDecorators":true --> See my settings for reference

Upvotes: 0

Yvonne Aburrow
Yvonne Aburrow

Reputation: 2728

I already had experimental decorators enabled in tsconfig.json, so I was a bit baffled until I found this thread on GitHub where someone says to check the settings in VS Code.

So I went to File --> Preferences --> Settings and searched for experimental decorators and checked both of these settings: experimental decorators enabled in settings

Here are the details of my version of VSCode:

Version: 1.52.1 (user setup)
Commit: ea3859d4ba2f3e577a159bc91e3074c5d85c0523
Date: 2020-12-16T16:34:46.910Z
Electron: 9.3.5
Chrome: 83.0.4103.122
Node.js: 12.14.1
V8: 8.3.110.13-electron.0
OS: Windows_NT x64 10.0.18363

Upvotes: 0

Dayán Ruiz
Dayán Ruiz

Reputation: 670

Please check you oppened in your VS Code the folder of the entire project and not only the src folder, because if you open only the src, then ts.config.json file will not be in scope, and VS will not recognize the experimental decorators parameters.

In my case this fixed all the problem

Upvotes: 0

Manoj Paul
Manoj Paul

Reputation: 5557

I've to add the following in the settings.json file of vscode to remove the warning.

"javascript.implicitProjectConfig.experimentalDecorators": true

VSCode -> Preferences -> Settings

enter image description here

Upvotes: 16

Huupke
Huupke

Reputation: 1155

Even when opening VSCode at the right level within your project you might still need an extra tsconfig file in your root. I now have a tsconfig in my project root (only containing php index and folders), ts folder (legacy typescript classes) and my src folder (vue components).

Don't forget to close the folder and to restart VSCode.

Upvotes: 1

bvdb
bvdb

Reputation: 24710

As other answers pointed out, your Visual Studio Code needs to find the tsconfig.json file.

I had the same problem. And it's mostly because I didn't realize the project structure.

(Hint: Read the text from top to bottom in the picture below).

Solution

  1. I had confused the tsconfig.json with the tsconfig.app.json.
  2. And I had opened the wrong folder in Visual Studio. As a result, the tsconfig.json was not in scope.

Simply opening the right root folder (i.e. the project folder, one level higher than the src.) solved the problem for me.

Upvotes: 6

Sergiy Ostrovsky
Sergiy Ostrovsky

Reputation: 2532

This helped me with React JS files (VSCode Version 1.9.1).

1) Put into tsconfig.json:

{
    "compilerOptions": {
        "experimentalDecorators": true,
        "allowJs": true
    }
}

2) Restart VS Code.

Note: as Tim mentioned below, you need to add the tsconfig.json even if your not using TypeScript.

Source: https://ihatetomatoes.net/how-to-remove-experimentaldecorators-warning-in-vscode/

Upvotes: 4

Cedriga
Cedriga

Reputation: 4156

If you use Grunt (grunt-ts), you must also add "experimentalDecorators: true" as option in the file gruntfile.js .

Your file should look something like this at the end:

module.exports = function(grunt) {
  grunt.initConfig({
    ts: {
      default : {
        src: ["**/*.ts", "!node_modules/**"]
      },
      options: {
        experimentalDecorators: true
      }
    }
  });
  grunt.loadNpmTasks("grunt-ts");
  grunt.registerTask("default", ["ts"]);
};

For more information you can read documentation on github https://github.com/TypeStrong/grunt-ts#experimentaldecorators

Upvotes: 3

Felipe
Felipe

Reputation: 11959

I was having this same error. I added the following tsconfig.json file to my project root, restarted VSCode and it finally went away:

{
    "compilerOptions": {
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "module": "amd",
        "target": "ES6" 
    }
}

UPDATE:

I've noticed that sometimes VS Code will not suppress this warning until you add a "files" array in your tsconfig.json, even an empty one will work. For me this has worked every single time now, if the message does not disappear, try the following:

{
    "compilerOptions": {
        ... 
    },
    "files": [],
    "exclude": [
        "node_modules"
    ]
}

Perhaps this will explain why everyone has mixed results?

Upvotes: 44

Sydwell
Sydwell

Reputation: 5024

Struggling with this across two different Angular 2 final release projects, this is my solution.

tsconfig.json in the src fold.

{
    "compilerOptions": {

        "experimentalDecorators": true

    }
} 

AND

Add this setting to File->Preferences->User settings

"typescript.tsdk": "node_modules\\typescript\\lib"

Upvotes: 7

VSC is by default looking at its own TS library and definition. If you're using a different version (which is very likely) you should point VSC to look for that versions definition.

In my settings.json file, i have the following set up:

// Place your settings in this file to overwrite default and user settings.
{
    "typescript.tsdk": "node_modules\\typescript\\lib"

}

I believe you can set this for either your User Settings or your Workspace Settings. So you can do a one time configuration in your User Settings or just for one project/workspace. This works if you have your typescript installed locally in the specified folder - which i believe is the default nodes module folder.

To edit your settings go to File/Preferences/User Setting or File/Preference/Workspace Settings.

UPDATE: Visual Studio Code just released a new version with better support for different versions of typescript. Check it out here: https://code.visualstudio.com/updates#_languages

Upvotes: 34

AHSAN KHAN
AHSAN KHAN

Reputation: 436

I was having same error i figure it out as this was i name component file extension as .js it should be .ts

Upvotes: 1

jmvtrinidad
jmvtrinidad

Reputation: 3658

In Visual studio code 1.3.1 my fix is in C:\Program Files (x86)\Microsoft VS Code\resources\app\extensions\typescript\server\typescript\lib\tsserver.js and comment out or delete the line.

if (!compilerOptions.experimentalDecorators) {
     error(node, ts.Diagnostics.Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Specify_experimentalDecorators_to_remove_this_warning);
}

Upvotes: 2

Abraão Alves
Abraão Alves

Reputation: 803

You can use "typescript.tsdk" in setting.json to change specific folder path containing tsserver.js and lib.ts files used by VSCode.

See this example: Can I use a relative path to configure typescript sdk?

note: You find setting.json in File > Preferences > User Settings.

Upvotes: 3

Wosi
Wosi

Reputation: 45153

You could do it the hard way by deleting the lines which create the error in %code%\resources\app\plugins\vs.language.typescript\lib\tsserver.lib.

Look for the following code and delete it

            if (!compilerOptions.experimentalDecorators) {
              error(node, ts.Diagnostics.Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Specify_experimentalDecorators_to_remove_this_warning);
            }

Upvotes: 12

Related Questions